【问题标题】:Why do I need to use .d to access data returned by jQuery AJAX?为什么我需要使用 .d 来访问 jQuery AJAX 返回的数据?
【发布时间】:2011-04-25 01:54:08
【问题描述】:

我使用在 Internet 上找到的一些教程整理了一些 jQuery AJAX 代码。我是 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

【问题讨论】:

    标签: asp.net jquery json serialization


    【解决方案1】:

    它是在 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/

    【讨论】:

      【解决方案2】:

      Microsoft 这样做是为了保护您免受安全漏洞的侵害。更多信息请见底部This Page

      【讨论】:

        【解决方案3】:

        我猜alert(msg) 显示“[object Object]”?

        如果是这样,那是因为通过 window.JSON 解析的对象(在将 json 指定为 dataType 时会在后台发生)确实看起来:

        object = {
            d:   "some data"
        }
        

        检查您在 ViewNamesAndNumbers.aspx/hello 中生成的内容

        【讨论】:

          猜你喜欢
          • 2015-03-12
          • 1970-01-01
          • 2016-04-29
          • 2015-11-17
          • 1970-01-01
          • 2011-11-25
          • 2021-01-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多