rails 3 – ajaxformsajax:未被调用的成功事件

经过多次故障排除后,我无法弄清楚为什么我的表单是ajax:在rails 3中没有调用成功回调。

以下是我在视图中最终生成的代码:

JS代码:

$(function() { $("#myform").bind('ajax:success', function(data, status, xhr) { alert("form success"); console.log(data); console.log(status); }).bind('ajax:error', function(xhr, status, error) { console.log(error); console.log(status); }); }); 

Ajax表格:

 

遵循表单发布到的操作中发生的逻辑:

  @foo = { :foo => "bar" } render(:json => @foo.to_json, :content_type => 'application/json', :layout => false) 

我有Firebugged这整个请求/响应:

 It says 200 OK. And the Response Headers are: Cache-Control max-age=0, private, must-revalidate Connection Keep-Alive Content-Length 13 Content-Type application/json; charset=utf-8 Date Mon, 23 Jan 2012 10:37:19 GMT Etag "9bb58f26192e4ba00f01e2e7b136bbd8" Server WEBrick/1.3.1 (Ruby/1.9.2/2011-07-09) Set-Cookie _session_id=BAh7CkkiD3Nlc3Npb25faWQGOgZFRiIlMGIzZGRhZDQ2ZjNmYzUzOWJkMzBkZWMxZDBmMDgwODZJIhBfY3NyZl90b2tlbgY7AEZJIjFoWnVoeHdib1FqMnFvOE1QSVI4RFd3WU1xQUMxVjJ5cUcrRFg5VW5sSXIwPQY7AEZJIhJyZXF1ZXN0X3Rva2VuBjsARkkiMGlCVmFZYllrU2R1RHl2aVZ4ZGc3ZWxKdmVxZkdFa1VKYWVXaHU0eXBmR1kGOwBUSSIZcmVxdWVzdF90b2tlbl9zZWNyZXQGOwBGSSIwcFdGTUVTUGt6d2VSY1pzV2YxU3JLNmFJSEpCU3FGMDh2ZmZ2U0pFaVI4cwY7AFRJIhRjdXJyZW50X3VzZXJfaWQGOwBGSSIpZDZiZDdhMjYtNDRjNi0xMWUxLTkwMDItZmExMjJjNjJmZTFmBjsARg%3D%3D--78099c697506ede3c7e9a833efa1785c6f1b9a6e; path=/; HttpOnly X-Runtime 0.354051 X-Ua-Compatible IE=Edge 

正如预期的那样:

 {"foo":"bar"} 

200 OK响应应该在我的JS中触发’ajax:success’但是这没有发生。 有什么想法吗? 错误回调也没有被击中……

我有同样的问题。 经过90分钟的搜索,我终于通过以下方式使用它:

 $(document).on('ajax:success', '.delete', function(e) { $(e.currentTarget).closest('div').fadeOut(); }); 

感谢: https : //stackoverflow.com/users/1609186/ivan-fong

我正在创建,然后尝试删除我刚创建的内容,所有这些都是通过ajax请求完成的。 希望这可以帮助某人。

在浪费了更多的时间之后,我终于通过以下方式让它工作:

1)将’ajax:success’绑定到application.js而不是部分中的标签。

2)将$(function(){})更改为jQuery(function($){})

不完全确定为什么上述两个步骤可以解决问题,但确实如此。 希望能帮助到你!

我有完全相同的问题,你自己对问题的回答也对我有所帮助。 但我认为这只是真正问题的解决方法。 出现此问题时有两种可能的情况:

  1. 您已经从Rails 2升级到3并仍然使用原型库(请参阅Rails 3 AJAX远程表单回调 )

  2. 你已经嵌入了两个jQuery库(这是我的问题)

如果有另一个与jQuery冲突的库,请查看您的html源代码。

它适用于表单ID,如:

 $("form#some_id").bind('ajax:success', function(){ ..... })