Pourquoi dois-je utiliser .d pour accéder aux données renvoyées par jQuery AJAX?

J’ai mis en place du code jQuery AJAX à l’aide de tutoriels trouvés sur Internet. Je suis nouveau dans jQuery et je veux apprendre à faire les choses mieux. J’ai un collègue qui a mis au point une belle application Web utilisant beaucoup de jQuery.

La chose qui me rend le plus confus ici est la suivante: pourquoi est-il nécessaire d’utiliser le “.d” pour faire référence à la réponse de ma méthode Web et qu’elle représente?

// ASP.net C# code [System.Web.Services.WebMethod] public static ssortingng hello() { return ("howdy"); } // Javascript code function testMethod() { $.ajax({ type: "POST", url: "ViewNamesAndNumbers.aspx/hello", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { alert(msg); // This doesn't display the response. alert(msg.d); // This displays the response. } // end success: }) // end $.ajax 

Il a été ajouté à la version ASP.NET 3.5 ASP.NET AJAX pour vous éviter d’être vulnérable à cet exploit: http://haacked.com/archive/2009/06/25/json-hijacking.aspx

(Réponse provenant de http://encosia.com/2009/06/29/never-worry-about-asp-net-ajaxs-d-again/ )

Microsoft fait cela pour vous protéger d’un exploit de sécurité. Voir le bas de cette page pour plus d’informations.

Je suppose que l’ alert(msg) affiche “[object Objet]”?

Si c’est le cas, c’est que l’object analysé par window.JSON (ce qui se passe sous le capot lors de la spécification de json comme type de données) a vraiment l’air:

 object = { d: "some data" } 

Vérifiez ce que vous générez dans ViewNamesAndNumbers.aspx / hello