大家好,我是新来的,这是我的第一个问题。
我在IE 11中遇到了一些JS代码的问题。
这就是问题:
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#jqueryFuction').load('ping?sessioneWeb=${requestScope.sessioneWeb}').fadeIn("slow");
}, 1000); // refresh every 10000 milliseconds
</script>
<div id="jqueryFuction">
</div>
此代码在我的服务器中发送一个请求,控制是否有一些JS代码推送到客户端。
在我的服务器中(我使用Spring MVC)我写了那段代码:
@RequestMapping(value = "/ping")
@ResponseBody public String ping(HttpServletRequest request, HttpServletResponse response,@ModelAttribute("sessioneWeb")String sessioneWeb,@ModelAttribute("item")ClientWom3Form item)
{
UserContainer userContainer = (UserContainer) request.getSession().getAttribute(sessioneWeb);
if(userContainer != null && Util.isNotNull(userContainer.getFuctionReadyJQ()))
{
String valore = "<script type=\"text/javascript\">"+userContainer.getFuctionReadyJQ()+"</script>";
userContainer.setFuctionReadyJQ("");
return valore;
}
else
return "";
}
使用此代码我可以在我的
中推送JS代码此代码在Chrome和FF中运行良好,但在IE中却没有。我无法到达服务器,我不知道为什么。
我看到浏览器每秒都会传递给负载,但它没有到达服务器,控制台也没有显示任何错误。
我使用jquery-1.10.2.min.js
有人可以帮我吗?
感谢所有人的关注和帮助
答案 0 :(得分:3)
IE以这样的缓存请求而闻名。我建议你在URL中添加一个唯一的参数来破坏缓存。
<script type="text/javascript">
var auto_refresh = setInterval(function () {
var now = new Date().getTime();
$('#jqueryFuction').load('ping?sessioneWeb=${requestScope.sessioneWeb}×tamp=' + now).fadeIn("slow");
}, 1000); // refresh every 10000 milliseconds
</script>
此外,fadeIn()
将无效,除非#jqueryFuction
设置为隐藏,然后才会执行.load()
。
我还认为你真的不想每秒都做一次ajax调用。一些ajax调用将花费一秒多的时间进行处理,如果你有很多观众,这将使你的服务器瘫痪。考虑更长的时间间隔或更有效的方式让您的服务器在有新内容时告诉您(如websockets)。