jQuery AJAX不断调用ASP.NET WebMethod错误

时间:2009-08-30 09:28:29

标签: c# asp.net jquery ajax

我在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状态调用的函数。

我做错了什么?

1 个答案:

答案 0 :(得分:-2)

不确定是否会导致问题,但您有一行内容为:

data: "{}",

应该是:

data: {},

或者您可以完全省略该行,因为它是方法调用的可选参数。您当前正在将其设置为字符串值,因为它实际上需要webmethod的参数,这可能会导致问题。

另外,行读:

contentType: "application/json; charset=utf-8",
dataType: "json",

对我来说似乎没用,因为对于初学者来说,你的webmethod实际上返回json并不明显。我认为它只是返回一个字符串。尝试完全删除这三行,看看它是否只是开始工作。