AJAX WebMethod帮助

时间:2010-11-17 15:04:00

标签: .net jquery pagemethods

我一直在尝试从jQuery AJAX访问.NET WebMethod,但我无法让它工作。我已经阅读了在SO和其他网站上找到的所有内容,似乎没有任何工作。

我的C#代码是这样的

[WebMethod]
public static string TestAjax()
{
    return "Hello World";
}

,JavaScript代码是

$.ajax({
    type: "POST",
    url: "ManageEvent.aspx/TestAjax",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg)
    {
        alert(msg.d);
    },
    error: function(result)
    {
        alert("error: " + result.status);
    }
});

最终目标是使用AJAX对数据库进行表单提交而不重新加载整个页面,但目前我甚至无法让它返回String。当我单击连接此代码的输入按钮时,将调用错误代码,状态为12030.但是当我在Visual Studio外部测试代码时,我仍然会出现错误,但状态为200.我的内容是否有明显的明显之处会导致此错误的代码?

非常感谢

编辑:

通过安装ASP.NET AJAX 1.0并调用我的Javascript

,我已经使用ASP.NET Ajax的ScriptManager工作了WebMethod
PageMethods.TextAjax(OnSuccess, OnFail);

其中OnSuccess和OnFail是函数。但是我还是无法让jQuery的AJAX工作。它仍然会抛出12030错误状态。

3 个答案:

答案 0 :(得分:1)

我看不出你的代码有什么问题。安装FireBug并查看设置问题的位置。这是一个完整的工作示例:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Services" %>

<script type="text/C#" runat="server">
    [WebMethod]
    public static string TestAjax()
    {
        return "Hello World";
    }
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head id="Head1" runat="server">
    <title></title>
    <script type="text/javascript" src="scripts/jquery-1.4.1.js"></script>
    <script type="text/javascript">
        $.ajax({
            type: "POST",
            url: "Default.aspx/TestAjax",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                alert(msg.d);
            },
            error: function (result) {
                alert("error: " + result.status);
            }
        });
    </script>
</head>
<body>
    <form id="Form1" runat="server">
    </form>
</body>
</html>

答案 1 :(得分:0)

一切看起来都是正确的。你的班级是这样的:

public partial class _Default : Page 
{
[WebMethod]
public static string TestAjax()
{
    return "Hello World";
}

}

答案 2 :(得分:0)

Web服务缺少[ScriptService]标记,该标记在安装ASP.NET AJAX

后修复了它