基本上,每当有人在这个网站上做任何事情时,我都需要从服务器检索一个新的javascript (这是一个复杂的数学问题,我不关心速度)。
我发出AJAX调用,并将其放入浏览器的标记中,如下所示:
getandplaceajax('id=showtotals','main'); // The first is the URL parameter, and the second is the ID of the <div> tag.
当我这样做的时候,我想在服务器上重写java-script文件,然后重新加载它。它是这样的,在标签中。
<script type="text/javascript" src="randomfilename.js"></script>
在此之后,我通过检索新的XML数据来刷新对象:
object1.loadXML("http://mywebsite/mydata.xml",
function(xml, url) {eventSource.loadXML(xml,url); });
如何告诉浏览器重新加载java-script文件(按需强制重新加载)?
我试图以交互方式将java-script加载到页面的一部分,但考虑到AJAX是异步的,并且在事件链中不可预测,这是一种不确定的情况。
而且我不会加载页面,所以不能使用唯一的number参数来引用java-script (以防止缓存)。
下周日,以你的名义,在教堂募捐盘上多捐50美元,以求解决问题。
提前感谢
杰夫
发布于 2010-11-01 02:31:48
如果您只需要加载JavaScript文件,则不需要进行Ajax调用。你可以在页面上添加一个新的脚本标签。
var scr = document.createElement("script");
scr.type="text/javascript";
scr.src="myFile.js";
document.body.appendChild(scr)
如果每次都调用同一个文件,则需要通过添加querystring值强制它获取新文件
scr.src="myFile.js?ts=" + new Date().getTime();
在服务器上,您可以请求php、servlet、.NET页面等,并让它返回JavaScript代码。它不一定是js文件。只需将内容类型设置为JavaScript,您的浏览器就不会在意。
发布于 2010-11-01 02:35:43
如果你没有使用任何库,你可以使用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的处理方式。
https://stackoverflow.com/questions/4066221
复制