我需要爲長時間運行的PHP腳本創建進度條,因此我決定將腳本進度寫入json文件,然後通過Javascript讀取它。一切工作正常在Firefox中,但如果我改變瀏覽器到Chrome它停止工作。在控制檯窗口中沒有錯誤。 Chrome只是在用戶啓動PHP腳本時停止加載json文件,但它在PHP執行開始之前會讀取該文件。 這是我的代碼或Chrome瀏覽器的正常行爲的問題嗎?Chrome在PHP腳本執行期間停止閱讀JSON文件
PHP:
$fp = fopen($this->writeFile, "w");
fwrite($fp, json_encode($values));
fclose($fp);
//for safety we will make a copy and let client access the copy.
copy($this->writeFile, $this->readFile);
的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);
});
}
JSON文件:
{"total":"0","current":"0"}
編輯1: 感謝超時提示,但它是工作(好)的Firefox的問題是沒有「XHR完成加載」respo NSE Chrome的控制檯中後,我開始PHP代碼執行(它加載每3秒爲它應該做的文件之前)
編輯2: 也許這個問題的原因是,我嘗試讀取這個JSON文件用戶提交表單後。我猜想,由於某些原因Chrome提交表單後不再允許執行jQuery $ getJSON函數。任何解決方法將不勝感激。
PHP文件可能超時。嘗試:'set_time_limit(0);' –
只需要注意一點,不要將字符串傳遞給'setTimeout',它會使用'eval'。傳遞函數。 'setTimeout(getProgress,3000);' –
Chrome有問題:http://stackoverflow.com/questions/2541949/problems-with-jquery-getjson-using-local-files-in-chrome – Popnoodles