Jquery Rails远程表单回调ajax:加载不会启动,其他人会启动
这是我的密码:Jquery Rails远程表单回调ajax:加载不会启动,其他人会启动,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,这是我的密码: $('#fb_login_form').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',
$('#fb_login_form').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:success
和ajax:complete
触发,我看到两个警报<代码>ajax:加载不会
我使用jQuery而不是原型。为什么?请使用下面的链接更正您的ajax事件方法名称
@user531065实际上是正确的,Rails 3实现了自己的回调名称。它是在rails.js(原型)或jquery_ujs.js(jquery)驱动程序中实现的。这两个驱动程序都扮演javascript角色,使AJAX链接和表单不引人注目 我正在将Rails2.3应用程序迁移到Rails3的过程中,遇到了一个类似的问题,回调没有启动 需要注意的一点是,如果您使用的是Prototype驱动程序,请使用Prototype定义回调:
$('edit_foo').observe('ajax:before', loading_function());
$('edit_foo').observe('ajax:complete', complete_function());
使用Jquery UJS驱动程序原始问题中的语法。如果您不确定您有哪个UJS驱动程序,请检查rails.js或jquery_js.js的public/javascripts
。这适用于Rails 3.0;我相信Rails3.1将使用jquery作为默认的UJS驱动程序
无论您拥有哪个UJS驱动程序,您都应该能够查看文件内部并验证是否存在以下回调:ajax:beforeSend
,ajax:success
,ajax:complete
,ajax:error
实际上,我的AJAX回调没有启动有几个原因:
- 使用不同的javascript库定义来自UJS驱动程序的回调
- 同时使用两个javascript库(这可以做到,但需要调用
)jQuery.noConflict()
- 首先包括
prototype
- 调用
在jQuery.noConflict()
、jQuery
和jQuery\u ujs
javascript包含标记之后,但在包含其他js库的标记之前application
- 使用这两个库时,不要调用
,因为您必须指定js include顺序javascript\u include\u标记:defaults
- 首先包括
ajax:before
,ajax:loading
,ajax:success
,ajax:failure
,ajax:complete
,ajax:after
这6条被编辑为:
- ajax:在发送之前
- 阿贾克斯:成功
- ajax:完成
- ajax:错误
是的,但是rails有自己的方法名和ajax:加载是一个有效的方法名,不是吗?不是,它不是一个有效的方法。尝试“ajax:beforeSend”而不是“ajax:loading”。因此,此“发送前”与“加载”的作用相同。当谈到jquery时,您必须使用“beforeSend”而不是“loading”。哇,谢谢!!有大量的文档在线引用
ajax:loading
,而不是ajax:beforeSend
。
ajax:beforeSend // equivalent to ajax:loading in earlier versions
ajax:success
ajax:complete
ajax:error // equivalent to ajax:failure in earlier versions