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

pro*_*011 7 javascript asp.net ajax jquery json

我使用的AJAX电话从我Html page从我的调用方法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>
Run Code Online (Sandbox Code Playgroud)

所以我的问题是我们需要使用的原因data.d?为什么所有数据存储在.d什么位置.d

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

请给我一些建议.

服务器端代码C#

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

所以d不是属性或变量,但我仍然有值得.d 谢谢

Dav*_*ker 12

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

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

{
    "d" : {
        "variable" : "value"
    }
}
Run Code Online (Sandbox Code Playgroud)

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