在PHP脚本执行期间,Chrome停止读取JSON文件

在PHP脚本执行期间,Chrome停止读取JSON文件,php,javascript,json,google-chrome,Php,Javascript,Json,Google Chrome,我需要为长时间运行的PHP脚本创建progressbar,所以我决定将脚本进度写入json文件,然后用Javascript读取它。在Firefox中一切正常,但如果我将浏览器更改为Chrome,它将停止工作。控制台窗口中没有错误。当用户启动PHP脚本时,Chrome会简单地停止加载json文件,但它会在PHP执行开始之前读取该文件。 这是我的代码问题还是Chrome浏览器的正常行为 PHP: Javascript: getProgress(); function getProgress() {

我需要为长时间运行的PHP脚本创建progressbar,所以我决定将脚本进度写入json文件,然后用Javascript读取它。在Firefox中一切正常,但如果我将浏览器更改为Chrome,它将停止工作。控制台窗口中没有错误。当用户启动PHP脚本时,Chrome会简单地停止加载json文件,但它会在PHP执行开始之前读取该文件。 这是我的代码问题还是Chrome浏览器的正常行为

PHP:

Javascript:

getProgress();
function getProgress() {
    $.ajaxSetup({ cache: false });
    $.getJSON("../../../../upload/status.json", function(data) {
    var pbvalue = 0;
    if(data){
        var total = data['total'];
        var current = data['current'];
        if(total != 0)
            pbvalue = Math.floor((current / total) * 100);
        $(".progress-bar .indicator").width(pbvalue+"%");
        $(".progress-text").text(current+"/"+total);
    }
    if(pbvalue < 99)
        setTimeout("getProgress()", 3000);
});
}
编辑1: 感谢超时提示,但它在Firefox中工作(很好)。问题是在我启动PHP执行后(在它按预期每3秒钟加载一次文件之前),Chrome控制台中没有“XHR完成加载”响应

编辑2:
可能这个问题的原因是我试图在用户提交表单后读取这个JSON文件。我猜由于某些原因,表单提交后的Chrome不再允许执行jQuery$getJSON函数。任何解决方法都将受到欢迎。

我甚至尝试制作读取json文件的flash动画,但也不起作用(看起来在提交Chrome停止更新当前显示的页面后)。
对我来说,唯一有效的解决方案是重新设计代码并通过ajax调用执行PHP函数,而不是传统的表单提交。

PHP文件可能会超时。尝试:
设置时间限制(0)
只是一个旁注,不要将字符串传递给
setTimeout
,它使用
eval
。传递函数<代码>设置超时(getProgress,3000)Chrome有问题:我按照你的链接尝试过——禁用web安全性,但这并不完全是我的问题,因为在我的例子中,Chrome中的Javascipt甚至没有尝试获取json文件。它看起来像是在PHP执行过程中冻结的,所以需要明确的是:在FF上,一切都正常。在Chrome上,它只在运行PHP脚本之前起作用。对吗?另外,在“网络”选项卡下显示什么?(请求是否已取消?是否为空?)
getProgress();
function getProgress() {
    $.ajaxSetup({ cache: false });
    $.getJSON("../../../../upload/status.json", function(data) {
    var pbvalue = 0;
    if(data){
        var total = data['total'];
        var current = data['current'];
        if(total != 0)
            pbvalue = Math.floor((current / total) * 100);
        $(".progress-bar .indicator").width(pbvalue+"%");
        $(".progress-text").text(current+"/"+total);
    }
    if(pbvalue < 99)
        setTimeout("getProgress()", 3000);
});
}
{"total":"0","current":"0"}