med*_*zid 4 ajax jquery ruby-on-rails ujs
我有一个链接,当我点击它将触发ajax调用,然后通过另一个链接替换此链接,例如说原始链接是"添加朋友",当我点击此链接它将发送ajax请求add_friend行动然后如果添加了朋友,上面的链接将被另一个链接"取消请求"替换,我使用ujs:
$("#link_for_friend").html("<%= escape_javascript(render('users/cancel_link')) %>")
Run Code Online (Sandbox Code Playgroud)
当我尝试添加回调(:成功和:完成)时,它不起作用,我尝试使用:beforeSend,如下所示:
$(document).ready ->
$("#my_link").on "ajax:beforeSend", ->
alert("hello")
Run Code Online (Sandbox Code Playgroud)
有成功和完全回调的解决方案吗?
注意:我的想法是在ajaxStart被触发时显示loader.gif然后在ajax:至少触发完成回调时隐藏它,如果有一些错误我想在ajax:error被触发时显示它
更新
我试图通过将action.js.erb中的代码移动到js文件来解决这个问题,如下所示:
$(document).ready ->
$(document).on("ajax:success", "a.invitation-box", ->
$("#link_for_friend").html("<%= escape_javascript(render('users/cancel_link')) %>")
).on "ajax:error", "a.invitation-box", ->
alert "error"
Run Code Online (Sandbox Code Playgroud)
但是这样就不可能将render('users/cancel_link')放在JS文件中
小智 7
我有同样的问题,问题不在于ajax:success或ajax:完全回调.问题是,在显示加载gif图像时,您将替换容器的内容,包括链接本身.因此,应用成功的元素,完整的回调不再是DOM的一部分,这就是为什么不触发回调的原因.
一种解决方案是隐藏元素并附加加载图像,如下所示:
$('#my_link').on "ajax:send", (event, xhr, settings) ->
$('#my_link').hide()
$("#my_link_container").append("<image src = 'img.gif' />")
Run Code Online (Sandbox Code Playgroud)
然后将触发成功和完整回调.希望它有助于某人:)
归档时间: |
|
查看次数: |
8189 次 |
最近记录: |