2011-05-05 80 views
1

为什么我总是有这么多麻烦......?因为我没有在我的other article解决这个问题,我决定的JavaScript只是代码的正确性入值...所以我有:Ajax.BeginForm的回调不起作用

OnSuccess="alert('ok')", 
OnFailure="alert('failed')", 

所以我的问题是,提交工作正常;一条记录被插入数据库,我得到一个回调......但我得到了错误的回调!即使插入记录,我也会失败。 heeeeelp!

回答

0

好吧,我想通了几件事情:

  1. onFailure处=“的HandleError”是要做到这一点(见另一篇文章我对决议中提到)
  2. ajaxContext没有一个正确的方法get_response()方法,因为我实际上是将函数连接到OnComplete事件(我的坏)!一旦连接到OnSuccess,我得到我的控制器的方法Json本地返回值
  3. 我得到了当数据库条目失败时调用的OnSuccess处理程序。这是因为我的控制器方法是try {} catch {} ing,因此永远不会失败!我被dopey :(
2

您应该能够从响应读取数据弄清楚为什么它被认为是一个失败:

OnFailure="handleError", 

...

function handleError(ajaxContext) { 
    var response = ajaxContext.get_response(); 
    var statusCode = response.get_statusCode(); 
    alert("Sorry, the request failed with status code " + statusCode); 
} 

或者,使用Fiddler并查看响应。确保状态码,内容类型和内容完全符合预期。

+0

1.我不明白为什么OnFailure是一个函数调用,而不是一个函数名称......我认为它应该是OnFailure =“handleError”? 2. ajaxContent doesn似乎没有包含get_response()方法......它包含一个responseText,它是我的控制器方法返回的对象的字符串表示形式(我不能解引用),它还包含失败,完成,完成,成功和错误,所有这些都是返回对象本身的方法... 我正在使用来自Microsoft CDN的jquery.unobtrusive-ajax.min.js库的最新版本,因此可能是什么问题? – ekkis 2011-05-06 07:10:28

+0

我的坏,我复制/粘贴。修正它 - 应该是一个函数名(我相信)。用Fiddler检查内容/内容类型/状态代码以确保它看起来都是相似的克拉。 – 2011-05-06 12:12:49