我正在使用以下脚本向名为index.html的文件请求新内容:
function addJS(js_urls) {
$.each(js_urls, function(index, value) {
$.ajax({
type: 'GET',
async: 'false', //We should not cache dynamic js-scripts
dataType: 'script',
url: value
})
})
}
function updatePage(data) {
if(data['js']) {addJS(data['js']);} //If any js-scripts are requested, load them
$.each(data, function(index, value) {
$('#' + index).html(value);
});
return false; //Stop link from redirecting
}
function ajaxRequest(url) {
if(ajaxReq) {ajaxReq.abort();} //Abort current ajax requests if they exist
ajaxReq = $.ajax({
type: 'GET',
cache: 'false', //We should not cache content
url: url,
dataType: 'json',
success: updatePage
});
}
让我说我的index.html看起来像这样:
<div id="content">Content to be replace</div>
澄清这里发生的事情。 ajax请求返回json数据,如果json数据包含名为“js”的条目,则该条目中的url通过addJS函数加载。如您所见,我不是缓存js脚本。
所以我的问题是,如果我使用ajaxRequest函数请求一个新的url,我已经加载的js-scripts会消失吗?或者他们会在那里,以便我可以通过新内容使用它们?
谢谢你的时间!
答案 0 :(得分:1)
如果我正确理解了这个问题,答案是“不”,你已经加载的脚本就不会“消失”。但是,如果您正在重新加载定义全局函数或全局变量的脚本,那么您已更改的内容将被覆盖。
换句话说,如果你有一个类似这样的脚本:
var globalvar = "hello world";
并且在处理您的页面的过程中:
if (whatever) globalvar = "goodbye world";
然后,如果您重新加载脚本,该变量将被设置回其原始值。