我正在使用来 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/