2011-02-19 4 views
1

Je suis en train d'appeler un webservice sur mon hôte local qui attend un paramètre PKID et retourner le résultat. WebService fonctionne parfaitement, mais lorsque j'appelle depuis JQuery, il ne renvoie aucune donnée. J'ai essayé presque toutes les combinaisons pour définir le paramètre pour la partie de service de Web (données) mais incapable d'obtenir n'importe quel résultat et la vraie douleur est que je n'obtiens aucune erreur.Appel paramétrés asmx Service Web à l'aide JQuery

$.ajax({ 
     type: "POST", 
     url: "http://localhost/WSTest/Service.asmx/AuthorGetById", 
     data: "{pkId :'" + pkId + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      return msg.d; 
     } 
    }); 
+0

Comment pouvez-vous dire si vous n'obtenez des erreurs si vous n'avez pas le rappel d'erreur mis en œuvre? En outre, votre callback "succès" ne semble pas faire quoi que ce soit de retour du callback. Je suppose que vous voulez faire quelque chose avec la valeur de retour, non? – Keith

+0

Ne pas publier de commentaires dans [modifications suggérées] (http://stackoverflow.com/suggested-edits/7355); il y a un bouton "ajouter un commentaire" sous chaque réponse que vous pouvez utiliser –

+0

Avez-vous ajouté '[System.Web.Script.Services.ScriptService] ' dans votre webmethod pour un appel ajax? – malinois

Répondre

0

Ceci n'est pas une réponse mais des moyens pour vous y aider.


Même si vous avez une erreur que vous obtenez il ne sera pas puisque vous ne l'avez pas traitée erreur du tout.
Cela vaut également la peine de vérifier si votre msg a «d» puisque c'est une fonctionnalité ASP.NET 3.5+.
Aussi, ne renvoyez pas msg.d essayer de l'alerter.

Un échantillon sera

$.ajax({ 
    type: "POST", 
    url: "http://localhost/WSTest/Service.asmx/AuthorGetById", 
    data: "{pkId :'" + pkId + "'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     var datum = msg.hasOwnProperty("d")? msg.d : msg; 
     alert("Success" + datum); 
     } 
    error:function (xhr, ajaxOptions, thrownError){ 
     alert("Error"); 
    } 
}); 
1

Le succès est invoqué comme un rappel d'AJAX. Cela signifie que son résultat est retourné à la fonction AJAX jQuery, pas comme un retour de votre fonction faisant l'appel AJAX. Vous devrez passer result.d à une autre fonction qui l'utilise. Avez-vous placé un point d'arrêt à l'intérieur de votre fonction de réussite pour voir quel résultat de valeur tient?

Pour plus d'informations sur la consommation de services Web utilisant des appels AJAX, consultez:

using jquery to consume aspnet json web services/

0

Je trouve la réponse. Actullay je passais les paramètres correctement et notant la réponse dans firebug mais était incapable de l'attraper en cas de succès parce que ... ma méthode de service de Web renvoient le vide. Je l'ai changé pour retourner la chaîne et boooom ça fonctionne bien.

Questions connexes