jQuery ajax无法调用WebMethod

时间:2013-06-25 14:15:37

标签: asp.net ajax jquery webmethod

我的问题似乎有一个非常简单的解决方案,在搜索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

2 个答案:

答案 0 :(得分:1)

我弄清楚为什么我得到html标记而不是json:due to security reasons UrlUpdatePage.aspx/GetRunningState只能通过HTTP POST请求调用。 所以,我需要在两个地方使用POST动词:type: 'POST'UseHttpGet = false

谢谢大家的帮助!

答案 1 :(得分:0)

尝试从网址中删除第一个斜杠。像那样:

url: "UrlUpdatePage.aspx/GetRunningState",