1

我一直在尝试从 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 向数据库提交表单,而无需重新加载整个页面,但目前我什至无法让它返回一个字符串。当我单击附加此代码的输入按钮时,错误代码被调用,状态为 12030。但是当我在 Visual Studio 之外测试代码时,我仍然出错,但状态为 200。在我的会导致此错误的代码?

万分感谢

编辑:

通过安装ASP.NET AJAX 1.0并调用我的 Javascript,我已经让 WebMethod 使用 ASP.NET Ajax 的 ScriptManager 工作

PageMethods.TextAjax(OnSuccess, OnFail);

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

4

3 回答 3

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>
于 2010-11-17T16:16:29.250 回答
0

这一切看起来都是正确的。你的课是这样的吗:

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

}
于 2010-11-17T16:16:35.603 回答
0

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

于 2011-09-28T17:24:38.497 回答