2009-09-12 10 views
1

Je développe un formulaire d'inscription dans ASP.NET dans lequel j'utilise le script côté client. J'ai donc utilisé la méthode jQuery.ajax pour POSTER les données de tous les champs au serveur via un service Web ASP.NET. Mais quand j'exécute la méthode Jquery.ajax, elle appelle la fonction d'erreur. J'ai essayé de le déboguer en utilisant Firebug dans Firefox. Il a montré l'erreur 500 Erreur interne de serveur. Maintenant, ce que je suppose est que pour insérer des données dans un WebService j'ai besoin d'utiliser une méthode POST et de même j'ai besoin d'une fonction sur le côté serveur dans Webservice qui peut être invoquée en utilisant la méthode POST. Je fournis quelques bribes de code pour illustrer ce que j'ai fait.Problème avec l'appel jQuery.ajax au service Web

Mon script client:

//My Client Side Function 
function registerUser() 
{ 
    var User = { 
     FirstName:$get("txtFirstName").value, 
     LastName:$get("txtLastName").value 
     . 
     . 
     //and so on....This way I creat my json object to POST on server 
     }; 

     //jQuery to POST Data 
     jQuery.ajax({ 
     type:"POST", 
     url:"Service/UserRegistration.asmx/InsertUser", 
     data:User, 
     success:notifyUser, 
     error:setErrorField 
     }); 

} 

//Function for Success Complition 
function notifyUser(msg) 
{ 
     alert("Registration Successfull"); 
} 

Mon service Web sur le serveur:

//My C# Web Service Logic 
[WebMethod] 
public void InsertUser(User use) 
{ 
     FreeUser us = new FreeUser(); 
     us.FirstName = use.FirstName; 
     . 
     . 
     //and so on 
} 

Maintenant, ce que je suppose est que la méthode POST nécessite WebInvoke classe comme attribut. Comment puis-je faire une méthode qui peut être appelée par JavaScript? Je dois utiliser WebInvoke pour cela.

Répondre

6

Si vous avez ASP.NET AJAX sur le côté serveur (ASP.NET 2.0 + ASP.NET AJAX Extensions v1.0 ou ASP.NET 3.5+), j'ai trouvé que la façon la plus simple de le faire est d'utiliser JSON entre le client et le serveur. Vous aurez juste besoin d'ajouter le [ScriptService] attribut à votre service, puis utiliser ce formulaire pour appeler le service:

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "WebService.asmx/WebMethodName", 
    data: "{}", 
    dataType: "json" 
}); 

Pour plus d'informations, voir le post complet ici: http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

Pour fournissez un objet JavaScript comme vous l'êtes dans cet exemple de code, vous aurez également besoin de use JSON.Stringify to generate an appropriate JSON string to pass to the server-side.

0

Si vous soumettez un objet JSON, ajoutez l'option suivante à $.ajax:

contentType: "application/json; charset=utf-8", 
Questions connexes