我有一个jquery脚本,每2秒运行一次ajax脚本
javascript:
function getvalue(){
$.ajax({
url: "http://localhost:3000/companies/#{@company.url}",
type: "GET",
dataType: "json",
success: function (json) {
$('.blabla').html(json.clicks);
$('.tratata').html(json.shows);
}
});
}
javascript:
$(document).ready(function(){
getvalue();
setInterval('getvalue()', 2000);
});
当我尝试在资源中移动此脚本并通过javascript_include_tag
给他打电话 - 然后它开始在整个应用程序中工作,而不仅仅是在我给他打电话的视图中。
如何解决?
UPD
我把这个脚本放到 app / assets / javascripts / foobar.js 中,然后打电话给他
= javascript_include_tag 'foobar'
答案 0 :(得分:0)
当rails生成app / assets / javascripts / application.js时,它会自动包含以下行:
//= require_tree .
告诉rails将此目录中的每个文件都包含在application.js中,默认情况下会在页面的头部调用。 foobar.js文件中的这一行:
$(document).ready(function(){
getvalue();
setInterval('getvalue()', 2000);
});
每次加载DOM时,都会告诉javascript运行此代码。这就是您的代码在每个页面上运行的原因。
为了防止这种情况,您有多个选项(请参阅this post了解一些想法),但最简单的方法是在DOM中查找仅在您希望它运行的页面上的元素,例如这样:
$(document).ready(function(){
if( $("#element-id-only-on-foobar-pages").is(":visable") ) {
getvalue();
setInterval('getvalue()', 2000);
}
});