2010-03-04 8 views
0

J'apprends simplement Ajax avec jQuery et j'ai une méthode de page simple qui accepte un paramètre et retourne une chaîne. Pour une raison quelconque, je ne reçois pas la chaîne de retour mais je reçois à mon message « succès »:Novice avec jQuery AJAX

$(document).ready(function() { 
      $.ajax({ 
       type: "POST", 
       url: "testFormMatt.aspx/sayHello", 
       contentType: "application/json; charset=utf-8", 
       data: '{"name": "matt"}', 
       dataType: "json", 
       success: function(msg) { 
        $.jGrowl('The web service has been successfully called'); 
        $('#result').append(msg); 
       } 
      }); 
}); 
+0

Vous êtes sûr que la chaîne de retour contient quelque chose? essayez juste 'alert (msg);' –

+0

Voulez-vous dire que msg est 'succès' et que 'succès' est ajouté à #result? Ou es-tu en train de dire que ton succès jGrowl tire mais que rien n'est ajouté à #result? – Lobstrosity

+0

jGrowl dit succès mais il n'y a rien d'ajouté à #result. [object Object] revient de la méthode asp.net lorsque j'utilise alert (msg). Devinez c'est où mon problème est? – Matt

Répondre

4

Lorsque vous appelez append, vous devez spécifier la propriété de l'objet JSON que vous voulez ajouter.

Donc, si votre page renvoie:

{ message: "Hello, Matt" } 

Ensuite, vous aurez besoin d'appeler append comme ceci:

$("#result").append(msg.message); 

Si votre page ne retourne pas JSON, alors vous devez prendre la dataType: "json" sur l'appel $.ajax. Le paramètre dataType permet de spécifier le type de données attendu de la réponse, et non le type de données de la demande.

+0

Ok, cool. Je ne le savais pas sur le dataType: "json". Je récupère maintenant cela dans mon alerte. {"d": "bonjour mat."} Comment nettoyer cela? – Matt

+0

Votre résultat est JSON, vous devez donc laisser 'dataType: "json"' là-dedans. Si votre propriété est appelée d, vous voudriez appeler $ ("# result"). Append (msg.d); – Lobstrosity