我有一个使用Rails UJS触发ajax请求的链接。响应实际上替换了包含链接的父元素。 ajax:事件之前按预期触发,但ajax:complete事件永远不会触发。我认为这只是元素被替换的结果。但是为了检查,我直接绑定了一个ajax"完成"不使用UJS回调,它工作正常。
所以我的问题是为什么"完成"直接绑定到ajax调用时的回调工作,但是当通过UJS绑定到" ajax:complete"?
时不起作用答案 0 :(得分:2)
阅读此jquery-ujs问题:
Event ajax:complete does not get triggered after form-replacement
答案 1 :(得分:-2)
我没想到我之前发表评论(道歉),但现在我觉得我已经足够清醒地帮助你:)。
虽然JQuery支持script()函数,但通常不会通过Ajax触发UJS!使用带有remote:true的常规form_tag(它将在表单中粘贴'data-remote'标签.Ajax与JSON和UJS一起工作,你将返回纯js
请记住,操作通常会以app / views /< controller> /< action> .js.erb(或您当前使用的任何模板技术)的名称呈现给表单
请记住在控制器中使用respond_to块,例如
respond_to do |format|
format.js #note.. not .json
end
还要确保您的请求标头接受javascript ..'application / javascript','script'