我正在为ASP.NET应用程序做客户端工作,下面的函数适用于各种浏览器:
$('#identifier').click(function () {
$('#script-placeholder').append('<script type="text/javascript"
src="SERVICEURL?callback=test"></script>');
});
当我点击ID为'identifier'的元素时,服务会发回一个包含在JS函数调用中的响应(即
test('response');
但是,在IE8和IE9中,如果我执行一次脚本,导航到另一个页面,然后返回并再次单击“标识符”,回调函数将被调用两次。任何人有任何想法为什么或知道一个变通方法?任何帮助将不胜感激! (注意我在localhost上遇到这个问题)...
答案 0 :(得分:1)
我知道有两种方法
方法1: -
在调用之前在URL中添加一些额外的参数。
$('#identifier').click(function () {
$('#script-placeholder').append('<script type="text/javascript"
src="SERVICEURL?callback=test&t="+Math.random()></script>');
});
以上只是一个例子。你必须检查你的情况。
另一个是
如果您使用的是generic handler
,请按照以下步骤在服务页面中设置无缓存
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Cache.SetNoStore();
答案 1 :(得分:0)
感谢大家的回答!在我发布问题之后,我正在阅读,并看到有另一种方式来调用而不是添加脚本标记:jQuery的getScript ...最终为我工作。这是我使用它的方式:
$('#identifier').click(function () {
var url = 'SERVICEURL?callback=test'
$.getScript(url);
});
希望这有助于将来的某个人!仅供参考:在Jquery网站上做了更多阅读之后,我发现了这个问题(这就是他们解决缓存问题的方法):默认情况下,$ .getScript()将缓存设置设置为false。这会将带时间戳的查询参数附加到请求URL,以确保浏览器在每次请求时都下载脚本。