我一直在尝试从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工作了WebMethodPageMethods.TextAjax(OnSuccess, OnFail);
其中OnSuccess和OnFail是函数。但是我还是无法让jQuery的AJAX工作。它仍然会抛出12030错误状态。
答案 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
后修复了它