Asp.net 为什么我需要使用.d来访问jQueryAjax返回的数据?

Asp.net 为什么我需要使用.d来访问jQueryAjax返回的数据?,asp.net,jquery,json,serialization,Asp.net,Jquery,Json,Serialization,我使用在互联网上找到的一些教程编写了一些jqueryajax代码。我是jQuery新手,希望学习如何做得更好。我有一位同事,他使用大量jQuery组合了一个漂亮的web应用程序 我在这里最困惑的是:为什么在提到我的web方法的响应时需要使用“.d”,它代表什么 // ASP.net C# code [System.Web.Services.WebMethod] public static string hello() { return ("howd

我使用在互联网上找到的一些教程编写了一些jqueryajax代码。我是jQuery新手,希望学习如何做得更好。我有一位同事,他使用大量jQuery组合了一个漂亮的web应用程序

我在这里最困惑的是:为什么在提到我的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
我猜
alert(msg)
显示“[object]”

如果是这样,那是因为通过
window.JSON
解析的对象(在将
JSON
指定为数据类型时发生在引擎盖下)看起来确实是:

object = {
    d:   "some data"
}

检查您在ViewNamesAndNumbers.aspx/hello

中生成的内容。它是在ASP.NET 3.5版本的ASP.NET AJAX中添加的,以防止您受到此漏洞的攻击:


(答案来源于)

Microsoft这样做是为了保护您免受安全漏洞攻击。有关详细信息,请参见的底部