为什么我们在从ajax json调用获取响应时使用data.d

Why we use data.d while get response from ajax json call?

本文关键字:响应 data 获取 调用 我们 ajax json 为什么      更新时间:2023-09-26

我使用Html页面中的AJAX调用来调用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),您将在浏览器控制台中看到响应数据结构。