为什么JQuery AJAX调用不起作用?

时间:2013-03-01 05:55:22

标签: asp.net ajax jquery

以下是我的JQuery AJAX方法:

function meFun() {
    alert('enter');

    $.ajax({
        type: "POST",
        url: "About.aspx/GetRes",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            // Do something interesting here.
            alert(msg);
        }
    });
    alert('end');

}

以下是我的按钮代码:

<input type="button" onclick="meFun();" value="Click me" id="btn" />

Folling是我在About.aspx中的功能

Public Function GetRes() As Boolean
    Return True
End Function

成功调用meFun()方法,但不调用GetRes(),并且AJAX调用不会返回任何响应。

知道为什么吗?另外,请建议调试这些AJAX问题的好方法。

2 个答案:

答案 0 :(得分:3)

首先,确保服务器端的GetMes函数具有WebMethod属性(这是在C#中,我不知道你是如何在VB中那样做的)并使GetRes成为静态(或者VB中的等价物)。

[WebMethod]
public static bool GetRes()
{
  return true;
}

然后,将error处理程序添加到您的jQuery ajax调用中:

$.ajax({
        type: "POST",
        url: "About.aspx/GetRes",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            // Do something interesting here.
            alert(msg);
        },
        error: function (data) {
        }
    });
    alert('end');

编辑:要调试,在错误处理程序中设置断点并检查data参数。所有的浏览器(好吧,我可以保证IE,Firefox(使用Firebug)和Chrome)都有很好的脚本调试器。如果发生错误,data中会有一个属性,其名称目前无法解释,这将详细解释错误。

答案 1 :(得分:1)

当您的AJAX CALL期望JSON格式时,您将以STRING格式返回数据 因此,通过使用newtonsoft库或内置的asp.net jsonconversion机制,服务器端可以转换为JSON格式

如svajger所述,您必须将其声明为webmethod并且必须是静态的,返回类型是字符串首选

并且在成功处理程序中你必须通过解析json数据 JSON.parse方法