2010-08-09 12 views
2

J'ai cherché sur la façon de consommer une webmethod en utilisant l'appel .ajax $ en utilisant ce code ci-dessous:jQuery ASP.net consommation de webservice

$.ajax({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: "WebService.asmx/HelloWorld", 
      data: "{}", 
      dataType: "json", 
      success: function(msg) { 
       alert(msg.d); 
      } 
     }); 

Cependant, lorsque j'ai essayé de changer le type de « POST » à "GET", l'appel n'a pas passé. Quelqu'un peut-il s'il vous plaît indiquer une raison pour laquelle cela arrive?

Répondre

4

Par degault GET demandes sont désactivées pour les services Web ASP.Net AJAX, ScottGu has an excellent blog entry on this, y compris comment contourner cette sécurité si c'est ce que vous recherchez.

Voici un exemple fix, en réglant UseHttpGet sur le ScriptMethodAttribute:

[WebMethod, ScriptMethod(UseHttpGet=true)] 
public string HelloWorld() 
{ 
    return "Hello World"; 
} 
+0

Ajout du UseHttpGet fait obtenir l'appel par ... mais étant alors moins sûr ... Je utiliser la méthode POST à ​​la place cela ne fait pas de différence pour moi celui que je vais utiliser. Mais merci pour la réponse – Ryan

0

Avez-vous essayé de vérifier le code côté serveur pour voir où elle tire des valeurs de? il se peut qu'il ne réponde pas selon la méthode utilisée.

également mis de côté: si vous récupérez des données d'un service Web, la méthode logiquement correcte est généralement GET.

1

Comme Nick a écrit que vous pouvez utiliser ScriptMethodAttribute ou vous pouvez activer GET traitement des requêtes web.config:

<webServices> 
    <protocols> 
     <add name="HttpGet"/> 
     <add name="HttpPost"/> 
    </protocols> 
</webServices>