javascript - 为什么我们在从 ajax json 调用获得响应时使用 data.d?

标签 javascript jquery asp.net ajax json

我正在使用来 self 的 Html 页面的 AJAX 调用来调用来 self 的 asmx.cs 文件的方法,使用以下代码:

    <script type="text/javascript">
        function ajaxCall() {               
            var UserName = $("#<%=lblUsername.ClientID %>").text();                
            $("#passwordAvailable").show();
            $.ajax({
                type: "POST",
                url: 'webServiceDemo.asmx/CheckOldPassword',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: JSON.stringify({ UserName: UserName }),
                success: function (data) {
                    if (JSON.parse(data.d) != "success") // Why we need to use "data.d" ??                                  
                    {
                        $("#passwordAvailable").attr("src", "App_Themes/NewTheme/images/deleteICN.gif");
                        $("#<%=txtOldPwd.ClientID %>").css({ 'border': '1px solid red' });
                    }
                    else {
                        $("#passwordAvailable").attr("src", "App_Themes/NewTheme/images/signoff.gif");
                    }
                }                    
            });
        }
    </script>

所以我的问题是为什么我们需要使用data.d?为什么所有数据都存储在.d中,什么是.d

因为当我只使用 data 时它没有给我正确的返回值,但是当我使用 data.d 时它会。

请给我建议。

服务器端代码 C#

[WebMethod]
    public string CheckOldPassword(string UserName)
    {
// code here
string sRtnValue = "success";
return sRtnValue;
}

所以 d 不是属性或变量,但我仍然在 .d 中得到了值 谢谢

最佳答案

C# 3.5 及更高版本会将所有 JSON 响应序列化为变量 d

当服务器发送一个 JSON 响应时,它会有一个类似这样的签名:

{
    "d" : {
        "variable" : "value"
    }
}

在 ajax 成功函数中使用 console.log(data),您将在浏览器控制台中看到响应数据结构。

关于javascript - 为什么我们在从 ajax json 调用获得响应时使用 data.d?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26711520/

相关文章:

javascript - 使用 window.open 时出现奇怪的 404 错误

javascript - Asp.net Bower安装plotly.js不起作用

javascript - JQuery .click() 不选择元素

javascript - 通过单击相应行上的按钮获取特定的表行值

asp.net - 如何在 ASP.NET 中隐藏页面名称和查询字符串?

asp.net - Web 应用程序 - 组合还是分离?

javascript - 导航栏多项选择

javascript - InputMask 范围从 0 到 254

javascript - 如何在onclick中调用jquery函数中的值

c# - Entity Framework - 使用 lambda 表达式编写查询