非缓存的js脚本是否附加到ajax-get请求的主文件中?

时间:2010-03-06 13:10:26

标签: javascript jquery ajax

我正在使用以下脚本向名为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会消失吗?或者他们会在那里,以便我可以通过新内容使用它们?

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,答案是“不”,你已经加载的脚本就不会“消失”。但是,如果您正在重新加载定义全局函数或全局变量的脚本,那么您已更改的内容将被覆盖。

换句话说,如果你有一个类似这样的脚本:

var globalvar = "hello world";

并且在处理您的页面的过程中:

  if (whatever) globalvar = "goodbye world";

然后,如果您重新加载脚本,该变量将被设置回其原始值。