0

我正在为 ASP.NET 应用程序做客户端工作,下面的功能可以跨浏览器工作:

$('#identifier').click(function () {
    $('#script-placeholder').append('<script type="text/javascript" 
    src="SERVICEURL?callback=test"></script>');
});

当我单击 ID 为“标识符”的元素时,服务会发回包含在 JS 函数调用中的响应(即

test('response');

但是,在 IE8 和 IE9 中,如果我执行一次脚本,导航到不同的页面,然后返回并再次单击“标识符”,回调函数将被调用两次。任何人都知道为什么或知道解决方法吗?任何帮助将不胜感激!(请注意,我在本地主机上遇到了这个问题)......

4

2 回答 2

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();
于 2013-01-29T05:30:19.957 回答
0

感谢大家的回答!在发布问题后,我正在阅读并看到有另一种方法可以进行调用,而不是添加脚本标签:jQuery 的 getScript ......这最终对我有用。这是我使用它的方式:

    $('#identifier').click(function () {
        var url = 'SERVICEURL?callback=test'
        $.getScript(url);
    });

希望这可以帮助将来的人!仅供参考:在 Jquery 的网站上进行了更多阅读后,我发现了这一点(这是他们解决缓存问题的方法):默认情况下,$.getScript() 将缓存设置设置为 false。这会将时间戳查询参数附加到请求 URL,以确保浏览器在每次请求时下载脚本。

于 2013-01-29T05:06:41.500 回答