如果响应延迟,我无法理解从jQuery AJAX请求返回的数据。我每秒都在运行请求,如果响应延迟了,比如说3秒,就会调用AJAX的成功方法
请参阅fiddle:
HTML:
<div id="result"></div>
JS:
$(document).ready(function(){
updateData();
function updateData(){
doRequest();
setTimeout(updateData, 1000);
}
function doRequest(){
$.ajax({
url: '/echo/js/',
type : "GET",
data: {
js: "",
delay: 3
},
success: function(retVal){
$('#result').append(new Date() + '<br>');
},
error: function(error){
alert("Error in network (" + error.status + ")");
}
});
}
})
我是否可以强制jQuery为每个响应运行成功方法,而不是在任何组中运行,并强制它每秒运行一次请求?谢谢!
答案 0 :(得分:1)
这都是关于缓存的。 http://jsfiddle.net/jakecigar/9bcxh3hd/4/杀死了缓存。
通常从缓存中获取具有相同参数的get请求。
$(document).ready(function(){
updateData();
function updateData(){
doRequest();
setTimeout(updateData, 1000);
}
function doRequest(){
$.ajax({
url: '/echo/js/',
type : "GET",
**cache:false,**
data: {
js: "",
delay: 3
},
success: function(retVal){
$('#result').append(new Date() + '<br>');
},
error: function(error){
alert("Error in network (" + error.status + ")");
}
});
}
})
答案 1 :(得分:0)
根据您的意见:
在<head>
下:
<script>
var second_1=0;
var second_2=0;
var second_3;
</script>
从我的角度来看,您应该使用全局变量来存储second_1
,second_2
,然后使用响应数据(second_3
)。
接下来,使用您的响应数据(第3秒)并获得这些值的平均值。摆脱延迟,并做这样的事情:
success: function (data) {
second_3=data; //whatever part of data it is you are using
var my_average = (second_1 + second_2 + second_3)/3;
second_1 = second_2; // 2nd second becomes first
second_2 = second_3; // and 3rd second becomes second
}
我希望这会有所帮助。