我的问题似乎有非常简单的解决方案,在搜索 SO 和谷歌搜索后我找不到它。
我有一个位于 UrlUpdatePage.aspx 中的客户端脚本。它定期调用从 aspx 获取 json 以获取操作的当前状态并向用户显示消息。下面是ajax调用:
var listenForStatusChanges = function () {
$.ajax({
type: 'GET',
url: "/UrlUpdatePage.aspx/GetRunningState",
data: "{}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
alert(data.IsRunning);
}
});
};
在代码隐藏文件 UrlUpdatePage.cs 我有这样的方法
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public static string GetRunningState()
{
...
return jsonObj;
}
问题是当进行 ajax 调用时,GetRunningState
在调试模式下不会触发该方法,并且success
回调也不会触发。此外,当我在 Firebug 中查看请求的详细信息时,发出了请求,但从响应选项卡中我可以看到调用返回 html 标记,而不是 json 数据。
应该怎么做才能将GetRunningState
方法暴露给客户端并从服务器获取 json?我使用.NET 4