我有一個鏈接,當我點擊它時會觸發ajax調用,然後用另一個鏈接替換這個鏈接,例如說原始鏈接是「添加朋友」,當我點擊這個鏈接,它會發送一個Ajax請求add_friend動作,然後如果朋友被添加上面的鏈接將被替換爲另一個鏈接「取消請求」,我使用ujs爲:ajax:成功和ajax:在Rails中使用UJS時完成回調不起作用
$("#link_for_friend").html("<%= escape_javascript(render('users/cancel_link')) %>")
當我嘗試添加回調(:成功:完成),它不工作,我試着用:beforeSend喜歡它的工作原理如下:
$(document).ready ->
$("#my_link").on "ajax:beforeSend", ->
alert("hello")
有一個成功的解決方案和完整的回調?我的想法是顯示一個loader.gif,當ajaxStart被觸發時,然後隱藏它,當ajax:至少觸發完整的回調,如果有一些錯誤我想顯示它時,ajax:錯誤被觸發
更新
我試圖通過內部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"
,但這樣一來它不是可能把渲染(「用戶/ cancel_li nk')裏面的一個JS文件
如果jQuery沒有發送ajax請求,全局ajax處理程序將不會被它觸發。 –
您是否意味着無法使用ujs執行此操作 – medBo
與jQuery的gobal方法不同,如果ujs未使用jquery執行ajax請求。我不知道ujs是什麼,但我假設它不使用jquery來做任何事情,因爲這會增加一些不需要的依賴,這些依賴是什麼ujs做的。你有沒有看過ujs,看它是否有任何鉤子可以用來在它發生之前和之後執行一個動作? –