我使用我在互联网上找到的一些教程汇总了一些jQuery AJAX代码。我是jQuery的新手,想学习如何做更好的事情。我有一个同事使用大量的jQuery组合了一个漂亮的Web应用程序。
我最担心的是:为什么在引用我的网络方法的响应时需要使用“.d”以及它代表什么?
// ASP.net C# code
[System.Web.Services.WebMethod]
public static string 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
答案 0 :(得分:13)
它是在ASP.NET 3.5版本的ASP.NET AJAX中添加的,以防止您受到此漏洞攻击:http://haacked.com/archive/2009/06/25/json-hijacking.aspx
(答案来自http://encosia.com/2009/06/29/never-worry-about-asp-net-ajaxs-d-again/)
答案 1 :(得分:5)
Microsoft这样做是为了保护您免受安全漏洞攻击。有关详细信息,请参阅This Page的底部。
答案 2 :(得分:4)
我猜alert(msg)
显示“[object Object]”?
如果是这样的话,那是因为通过window.JSON
解析的对象(在将json
指定为dataType时发生的事情)看起来确实如此:
object = {
d: "some data"
}
检查您在ViewNamesAndNumbers.aspx / hello
中生成的内容