【发布时间】:2015-04-23 18:36:41
【问题描述】:
我有一个简单的 ASP.NET Web 应用程序,其中包含在输入的 onblur 事件上运行的以下 javascript:
function checkUserName() {
var request = new XMLHttpRequest();
if (request == null) {
alert("Unable to create request.");
} else {
var theName = document.getElementById("username").value;
var userName = encodeURIComponent(theName);
var url = "Default.aspx/CheckName?name='" + theName + "'";
request.onreadystatechange = createStateChangeCallback(request);
request.open("GET", url, true);
request.setRequestHeader("Content-Type", "application/json");
request.send();
}
}
此调用的 C# 方法如下:
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string CheckName(string name)
{
return name + " modified backstage";
}
XMLHttpRequest 的 javascript 回调如下:
function createStateChangeCallback(request) {
return function () {
if (request.readyState == 4) {
var parsed = JSON.parse(request.responseText);
alert(parsed.d);
}
}
}
虽然这显示了我的服务器端方法的结果,但我想知道我需要访问该属性“d”以获得结果。我仅通过使用 Intellisense 才发现这一点。这个属性是访问解析后的 JSON 的标准属性吗?我应该以其他方式解决吗? “d”是任意的还是以某种方式确定的?我是否可以设置属性的名称,无论是客户端还是服务器端?
【问题讨论】:
-
@adeneo:是的,它按预期被调用了。
-
是的,我没有注意到函数马上返回一个函数,花了我一秒钟。
-
并且没有标准可以在返回的对象上设置
d属性,一定是其他添加它的东西吗? -
似乎您的服务器正在将有效负载包装到
d。
标签: javascript c# asp.net json