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.js
( http://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远程助手的:update
function。
如果接受的答案没有解决您的问题,请检查您是否嵌入了多个jQuery库。 在我的情况下,我有两个不同版本的嵌入式jQuery,在删除其中一个之后,一切正常。