我开发了一个小型演示应用程序,用Facebook和Twitter等社交媒体测试一些接口API。
我在视图中遇到“问题”时,我使用turbolinks
gem actived进行Ajax-json调用。有时(是的,有时!)它在视图中呈现JSON响应(如.json)而不是右页(html)。如果我禁用turbolinks
gem,问题就不再出现了。
任何人都知道为什么会这样?即使使用turbolinks
gem,我还能做些什么来避免这个问题?
如果你需要一些代码来更好地理解它,你可以在这里找到(有时)错误的调用(检查Ajax调用):Link
答案 0 :(得分:1)
问题是Turbolinks会在大多数时间通过Ajax重新加载页面,这意味着典型的javascript DOM加载过程不会发生
<强>团强>
听起来像你将ajax进程绑定到特定元素,如下所示:
$("element").on("click", function() {
$.ajax({....
...});
});
解决这个问题的方法是使用javascript delegation将元素绑定到文档,并委托给您需要的元素
看看你的代码,我会这样做:
$(document).on("submit", "form", function(){
// .... your ajax code
});
我还要确保你使用unobtrusive javascript(把它放在它自己的JS文件中,而不是你的视图中)。如果您给了我们更多的背景信息,我可以为您创建更加量身定制的解决方案