对于我做的每个AJAX调用,我想重新加载一个新的java脚本

时间:2010-11-01 01:59:24

标签: javascript

基本上,每当有人在这个网站上做任何事情时,我都需要从服务器上检索一个新的javascript(这是一个复杂的数学问题,我并不关心速度)。

我进行AJAX调用,并将其粘贴到浏览器的标签中,如下所示:

getandplaceajax('id=showtotals','main');   // The first is the URL parameter, and the second is the ID of the <div> tag.

当我这样做时,我想在服务器上重写java脚本文件,然后重新加载它。就像这样,在标签中。

<script type="text/javascript" src="randomfilename.js"></script>

在此之后,我通过检索新的XML数据来刷新我的对象:

    object1.loadXML("http://mywebsite/mydata.xml",
       function(xml, url) {eventSource.loadXML(xml,url); });

如何告诉浏览器重新加载java脚本文件(按需强制重新加载)?

我尝试以交互方式将java脚本加载到页面的一部分中,但这是一个不确定的情况,因为AJAX在事件链中是异步且不可预测的。

我没有进行页面加载,因此不能选择使用唯一的数字参数引用java脚本(以防止缓存)。

下周日,以你的名义为教会提供额外的50美元,以寻求解决方案。

提前致谢

杰夫

2 个答案:

答案 0 :(得分:0)

如果您只需要加载JavaScript文件,则无需进行Ajax调用。您只需在页面上附加一个新的脚本标记即可。

var scr = document.createElement("script");
scr.type="text/javascript";
scr.src="myFile.js";
document.body.appendChild(scr)

如果您每次需要强制它通过添加查询字符串值来获取新文件时调用相同的文件

scr.src="myFile.js?ts=" + new Date().getTime();

在服务器上,您可以请求php,servlet,.NET页面等,并让它返回JavaScript代码。它不必是一个js文件。只需将内容类型设置为JavaScript,您的浏览器就不会关心。

答案 1 :(得分:0)

如果您没有使用任何库,您可以使用Facebook正在做的事情

http://developers.facebook.com/docs/reference/javascript/

var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
  '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);

以这种方式加载新脚本。您还可以将脚本标记的src更改为'myfile.js?timestamp=' + (new Date()).getTime(),或者您可以返回带有<script>标记的javascript并将其放入div或返回javascript并评估它们,类似于处理RJS的方式。