我在Firefox,Opera和Seamonkey上测试了这个。它工作正常。说到Internet Explorer 7.它可以工作但是达到某一点。我每隔几秒钟就会对PHP脚本进行一次AJAX调用。在IE7中,它进行第一次AJAX调用并检索数据,但它不会再次执行。即使我在else块中有一个setTimeout函数。 为什么? :(
startTime = setTimeout('getStatus()', 5000);
}//function convertNow
function getStatus() {
$.ajax({
type: "GET",
url: "fileReader.php",
data: 'textFile=' + fileNameTxt,
success: function(respomse){
textFileResponse = respomse.split(" ");
$("#done").html("Downloading & Converting Video...<b style='font-size:17px;color:green;'>" + textFileResponse[0] + "</b><br /><b>" + properFileName + '</b>');
}
});//ajax
if(textFileResponse[0]=='100.0%'){
}
else{
continueTime = setTimeout('getStatus();', 3000);
alert('call end');
}
}
道歉,如果有任何挫折感来自这个问题。在过去的3个小时里,我像无头鸡一样跑来跑去。
感谢您的帮助。
我添加了完整的功能。 setTimeout似乎正常工作。它必须是AJAX调用,我只是检查返回的内容。更奇怪!它不断从AJAX请求中返回相同的值,并且没有获得任何更新的值!我认为答案2可能有一些东西。它可能是由于缓存,但你怎么过来?
答案 0 :(得分:4)
您是否通过HTTP GET请求ajax调用而不是HTTP POST? IE倾向于使用ajax调用的缓存结果,除非你使用POST而不是GET。
编辑:既然你已经更新了你的问题,我可以看到你确实在使用GET动词。将其更改为POST,我打赌您的问题将得到解决。
答案 1 :(得分:1)
完全不确定,但是你错过了;
?
从:
setTimeout('getStatus()', 3000);
为:
setTimeout('getStatus();', 3000);
答案 2 :(得分:1)
您仍然可以使用GET请求,只需添加
即可cache: false
到$ .ajax请求。
答案 3 :(得分:0)
我注意到textFileResponse是在AJAX调用的成功处理程序的函数声明中设置的,但在进行AJAX调用后立即引用为数组。也许在IE 7中,成功处理程序在数组引用之前没有完成,这会引发java脚本错误,因此setTimeout永远不会运行。