我一直在努力解决这个问题,而且类似问题的建议根本没有帮助。我试图在我的RoR应用程序中对$(document).ready进行AJAX调用,并从简单的$ .get()开始,如
<script type="text/javascript">
$(document).ready(function(){
$.get('/render_single_stats/<%=@user_params.id%>/');
});
</script>
适用于Opera,Chrome和Firefox,但不适用于IE。 在搜索了SO答案之后,我尝试了
$(document).ready(function(){
var timestamp = new Date();
$.ajax({type : 'POST', url : '/render_single_stats/<%=@user_params.id%>' + '×tamp=' + timestamp.getTime(), cache : false, contentType : 'application/javascript'});
});
</script>
这个电话也没有运气。
我很确定jQuery库已加载,因为其他函数正在运行。我正在使用最新的'jquery-rails'宝石。
我也试图强制使用IE7兼容模式,但没有运气。
所以在尝试了大部分建议之后,我错过了什么或做错了吗?
编辑:
结果出现了与我的jQuery版本有关的问题(从1.5.2切换到1.7.1),然后我不得不将我的html更改为对IE有效。在实现这一点之前,我作为原始html对服务器响应进行了逐步检查,然后似乎jQuery.html()无效,这导致了HTML的验证。
该死的IE :(
非常感谢你们的回答,但是我无法将这些答案标记为正确,因为问题正存在于其他地方。
答案 0 :(得分:0)
我遇到了与IE类似的问题,问题是IE正在“捕捉”ajax调用的响应,因此它只执行一次ajax调用,然后所有其他时间将使用第一个原始响应。 您可以通过关闭和打开浏览器来测试此理论。 修复程序基本上告诉IE不要捕获响应,你可以通过在ajax响应中添加以下标题来实现:
response['Cache-Control']='no-store, no-cache, must-revalidate, post-check=0, pre-check=0'
response['Pragma']='no-cache'
response['Expires']='Sun, 19 Nov 1978 05:00:00 GMT'
答案 1 :(得分:0)
由于您正在检索RJS模板,请尝试尝试:
$.getScript('/render_single_stats/<%=@user_params.id%>/');
根据jQuery文档,
$.get()
使用HTTP GET请求从服务器加载数据。
$.getScript()
使用GET HTTP请求从服务器加载JS文件,然后执行它。