我有一个链接,当我点击它时会触发一个 ajax 调用,然后用另一个链接替换这个链接,例如原始链接是“添加朋友”,当我点击这个链接时,它会发送一个 ajax 请求到 add_friend 操作然后如果添加了朋友,上面的链接将被另一个链接“取消请求”替换,我为此使用 ujs:
$("#link_for_friend").html("<%= escape_javascript(render('users/cancel_link')) %>")
当我尝试添加回调(:成功和:完成)它不起作用时,我尝试使用:beforeSend,如下所示:
$(document).ready ->
$("#my_link").on "ajax:beforeSend", ->
alert("hello")
有成功和完整回调的解决方案吗?
注意:我的想法是在触发 ajaxStart 时显示 loader.gif,然后在至少触发 ajax:complete 回调时隐藏它,如果有一些错误我想在触发 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"
但是这种方式不可能将 render('users/cancel_link') 放在 JS 文件中