2010-03-10 123 views
1

我有这个AJAX代码,但它似乎并没有抛出'alert'方法。相反,没有任何反应。我看着它与提琴手和得到这个错误信息: {"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}简单的AJAX不工作

我想调用的代码隐藏称为MyWebMethod一个Web方法:

$.ajax({ type: "POST", 
      url: "Test.aspx/MyWebMethod", 
      data: "{" + username + "}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 

      success: function() { 
       alert("success"); 
      }, 

      fail: function() { 
       alert("Fail"); 
      } 
}); 

Web方法工作得很好,当我有一个页面上的脚本管理器,但我想删除脚本管理器,并认为使用AJAX将是最好的方法。

感谢

+0

首先尝试使用NO数据,调用将返回类似服务器时间戳的内容...作为字符串并提醒。确保你的web方法名称“用户名”匹配...编辑:我尾随在页面上的编辑...在这一点上可能不相关... – 2010-03-10 22:33:13

回答

1

我认为,如果你改变failerror,你会得到第二次警告框。

[编辑]我想如果你再改

data: "{" + username + "}" 

data: "{ 'username': '" + username + "' }" 

你会得到第一个警报,但很难知道,没有看到服务你打电话。

+0

嗨,我改变它为错误,并提示确实显示。但我不知道它为什么失败 – 2010-03-10 22:15:32

+0

啊,抱歉没有看到您的编辑。这解决了问题!但是,web方法返回一个布尔值。我如何从“成功:”部分(或从通话中的其他任何地方)获取此值? 谢谢 – 2010-03-10 22:29:11

+0

要成功返回数据,请将success:function()更改为success:function(data)。根据您的服务设置,您将获得一个数据,这是您的布尔值或具有属性.d的数据,这是您的布尔值。 – pdr 2010-03-10 22:48:30

3

您在web.config中启用了自定义错误。因此,返回的异常将是通用的(大部分是空白的),每次都是相同的。这使得调试变得困难。

要查看真正的异常,请暂时禁用自定义错误。 Here is how to do that for web services only,如果你需要这种粒度。