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