我有一个链接,当我点击它时,它会触发一个ajax调用,然后用另一个链接替换这个链接,例如原始链接是“添加朋友”,当我点击这个链接时,它会向add_friend操作发送一个ajax请求如果添加了朋友,上面的链接将被另一个链接“取消请求”替换,我使用 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 时显示它
Update
我尝试通过将 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 文件中