Internet explorer Jquery SetInterval在Chrome和IE中不能正常工作,但在FireFox中可以正常工作
我下面有jquery/javascript,它在FireFox中运行良好,但在Chrome和IE中运行不太好Internet explorer Jquery SetInterval在Chrome和IE中不能正常工作,但在FireFox中可以正常工作,internet-explorer,google-chrome,jquery,setinterval,Internet Explorer,Google Chrome,Jquery,Setinterval,我下面有jquery/javascript,它在FireFox中运行良好,但在Chrome和IE中运行不太好 <script type="text/javascript"> (function($) { $(document).ready(function() { setInterval(function() { $.ajax({ type: 'GET'
<script type="text/javascript">
(function($) {
$(document).ready(function() {
setInterval(function() {
$.ajax({
type: 'GET',
url: "/items/xml/?page={{ pageNo }}",
dataType: 'html',
success: function(html, textStatus) {
$('table.items').replaceWith(html);
},
error: function(xhr, textStatus, errorThrown) {
if (xhr.status != 0)
{
$('table.items').replaceWith("<p />An error occurred: " + ( errorThrown ? errorThrown : xhr.status ));
}
}
});
}, 1000);
});
})(jQuery);
</script>
(函数($){
$(文档).ready(函数(){
setInterval(函数(){
$.ajax({
键入:“GET”,
url:“/items/xml/?page={{pageNo}}”,
数据类型:“html”,
成功:函数(html、textStatus){
$('table.items')。替换为(html);
},
错误:函数(xhr、textStatus、errorshown){
如果(xhr.status!=0)
{
$('table.items').replaceWith(“发生错误:”+(ErrorSprown?ErrorSprown:xhr.status));
}
}
});
}, 1000);
});
})(jQuery);
我更新了jquery版本。它是v1.10.2,就像我在另一个问题上看到的那样。
遗憾的是,这没有起作用。Chrome在大多数情况下都能工作,但有时它与IE完全不同,而且速度非常慢
这和我的代码有关系吗?或者这是Chrome和IE的问题?因为FireFox很好
编辑:
我应该很清楚,代码正在刷新以更新页面,以查看数据库中可能发生的更改。Ie添加了一个新项目,此代码确保在刷新后立即看到它,而无需让某人按F5或重新加载页面。
我的意思是,它只是停留在说它正在用chrome将信息加载到页面上,但大多数时候都没有显示页面上项目的信息,或者这样做的速度非常慢。IE也一样,FireFox也没问题 更新答案: 您已经更新,表示问题在于您没有看到更新的信息 您使用的是HTTP
GET
,这意味着如果浏览器愿意,欢迎它缓存调用的结果,除非您在响应中指定适当的缓存控制头。一些浏览器缓存XHR结果,其他浏览器则不缓存
最好的办法是让GET
返回适当的标题。但是,您也可以在ajax
调用上使用jQuery的cache:false
标志,强制GET
绕过缓存
原始答案: 你没有说什么是“不起作用的”,但如果你看到更新是以奇数的间隔发生的,那就不足为奇了 您的代码将大约每秒启动一次ajax请求(!)。该ajax请求将在一段时间后完成。多久之后将完全取决于用户的网络连接。所以事情很快就会变得混乱,可能会有多个未完成的请求,多个响应一个接一个地出现,等等 我建议仅在当前请求完成时启动下一个请求,如下所示:
(function ($) {
$(document).ready(function () {
function doRequest() {
$.ajax({
type: 'GET',
url: "/items/xml/?page={{ pageNo }}",
dataType: 'html',
success: function (html, textStatus) {
$('table.items').replaceWith(html);
},
error: function (xhr, textStatus, errorThrown) {
if (xhr.status != 0) {
$('table.items').replaceWith("<p />An error occurred: " + (errorThrown ? errorThrown : xhr.status));
}
},
complete: scheduleRequest // <=== Schedule the next on completion
});
}
function scheduleRequest() {
setTimeout(doRequest, 1000);
}
scheduleRequest();
});
})(jQuery);
(函数($){
$(文档).ready(函数(){
函数doRequest(){
$.ajax({
键入:“GET”,
url:“/items/xml/?page={{pageNo}}”,
数据类型:“html”,
成功:函数(html、textStatus){
$('table.items')。替换为(html);
},
错误:函数(xhr、textStatus、errorshown){
如果(xhr.status!=0){
$('table.items').replaceWith(“发生错误:”+(error抛出?error抛出:xhr.status));
}
},
完成:scheduleRequest/更新的答案:
您已经更新,表示问题在于您没有看到更新的信息
您使用的是HTTPGET
,这意味着如果浏览器愿意,欢迎它缓存调用的结果,除非您在响应中指定适当的缓存控制头。有些浏览器缓存XHR结果,而其他浏览器则不缓存
最好的办法是让GET
返回适当的头。但是,您也可以使用ajax
调用中jQuery的cache:false
标志,强制GET
绕过缓存
原始答案:
你没有说什么是“不起作用的”,但如果你看到更新是以奇数的间隔发生的,那就不足为奇了
您的代码将大约每秒启动一次ajax请求(!)。该ajax请求将在一段时间后完成。多长时间后将完全取决于用户的网络连接。因此,事情将非常、非常迅速地变得混乱,可能会有多个未完成的请求,多个响应会一个接一个地出现,等等
我建议仅在当前请求完成时启动下一个请求,如下所示:
(function ($) {
$(document).ready(function () {
function doRequest() {
$.ajax({
type: 'GET',
url: "/items/xml/?page={{ pageNo }}",
dataType: 'html',
success: function (html, textStatus) {
$('table.items').replaceWith(html);
},
error: function (xhr, textStatus, errorThrown) {
if (xhr.status != 0) {
$('table.items').replaceWith("<p />An error occurred: " + (errorThrown ? errorThrown : xhr.status));
}
},
complete: scheduleRequest // <=== Schedule the next on completion
});
}
function scheduleRequest() {
setTimeout(doRequest, 1000);
}
scheduleRequest();
});
})(jQuery);
(函数($){
$(文档).ready(函数(){
函数doRequest(){
$.ajax({
键入:“GET”,
url:“/items/xml/?page={{pageNo}}”,
数据类型:“html”,
成功:函数(html、textStatus){
$('table.items')。替换为(html);
},
错误:函数(xhr、textStatus、errorshown){
如果(xhr.status!=0){
$('table.items').replaceWith(“发生错误:”+(error抛出?error抛出:xhr.status));
}
},
完成:scheduleRequest//“不起作用”不是描述技术问题的适当方式。请描述您预期会发生什么,确切地说正在发生什么,以及(除非很明显)为什么您认为这不正确。您预期的行为是什么?您得到的行为是什么?“不起作用”这不是描述一个技术人员的适当方式吗