Rails 3 AJAX远程表单回拨

我正在从rails 2.3.8升级到3.0.0,所以我需要用form_for(@object, :remote=>true)替换remote_form_for帮助器调用。

我一直在跟随Simone Carletti,但我似乎无法从rails.js获得ajax回调。

我生成的HTML是:

 

我正在测试的javascript:

 jQuery(function($){ alert('document ready'); $("#formname") .bind('ajax:loading', function() {alert("loading!");}) .bind('ajax:success', function(data, status, xhr) {alert("success!");}) .bind('ajax:failure', function(xhr, status, error) {alert("failure!");}) .bind('ajax:complete', function() {alert("complete!");}); }); 

触发’文档就绪’警报,并成功执行ajax请求(数据发布到服务器),但没有’ ajax:____ ‘回调触发。

我究竟做错了什么?

(对于它的价值,表单本身是通过ajax加载的)

哇,这是一个傍晚的巨大浪费。

按照我的方式做,默认原型rails.js不会链接回调。

转换为基于jQuery的rails.jshttp://github.com/rails/jquery-ujs )后,回调工作正常。

您可以触发基于Prototype的回调,如下所示:

 $('formname').observe('ajax:before', function(){ ... }); $('formname').observe('ajax:complete', function(request){ ... }); 

但是,我不认为ajax:complete回调中的request对象包含响应 。 我习惯了jQuery,并希望访问响应很简单。 相反,看起来切换到jQuery-Rails可能仍然更容易,因为我似乎无法找到插入式Prototype代码来替换Rails 2远程助手的:updatefunction。

如果接受的答案没有解决您的问题,请检查您是否嵌入了多个jQuery库。 在我的情况下,我有两个不同版本的嵌入式jQuery,在删除其中一个之后,一切正常。