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

时间:2014-11-03 09:45:23

标签: javascript jquery asp.net ajax json

我正在使用AJAX来自Html page的{​​{1}}来使用以下代码从我的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中获得了价值 感谢

1 个答案:

答案 0 :(得分:11)

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

当服务器发送JSON响应时,它将具有与此类似的签名:

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

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