我在Default.aspx.cs中有一个非常简单的AJAX方法,它看起来像这样:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string GetDate()
{
return DateTime.Now.ToString();
}
}
Default.aspx看起来像这样:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript" src="http://192.168.1.2/tizma.com/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// Add the page method call as an onclick handler for the div.
$("#Result").click(function() {
$.ajax({
type: "POST",
url: "Default.aspx/GetDate",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: AjaxSucceeded,
error: AjaxFailed
});
});
});
function AjaxSucceeded(result)
{
alert(result.d);
}
function AjaxFailed(result)
{
alert(result.status + " " + result.statusText);
}
</script>
</head>
<body>
<div id="Result">Click me</div>
</body>
</html>
问题是,当我点击div时,ajax错误函数就是所有以200状态调用的函数。
我做错了什么?
答案 0 :(得分:-2)
不确定是否会导致问题,但您有一行内容为:
data: "{}",
应该是:
data: {},
或者您可以完全省略该行,因为它是方法调用的可选参数。您当前正在将其设置为字符串值,因为它实际上需要webmethod的参数,这可能会导致问题。
另外,行读:
contentType: "application/json; charset=utf-8",
dataType: "json",
对我来说似乎没用,因为对于初学者来说,你的webmethod实际上返回json并不明显。我认为它只是返回一个字符串。尝试完全删除这三行,看看它是否只是开始工作。