我從 http://www.dave-bond.com/blog/2010/01/JQuery-ajax-progress-HMTL5/閱讀內容,我試着在我自己的網站上使ajax進度條,但在控制檯我只有xhr響應,當PHP腳本完全完成。AJAX請求進度百分比日誌
我的JS代碼的一部分:
$('#userSaveData').on('click', function(e){
e.preventDefault();
var $form = $(this).closest('form');
var route = $form.attr('action');
var form_data = $form.serializeObject();
$.ajax({
xhr: function()
{
var xhr = new window.XMLHttpRequest();
//Upload progress
xhr.upload.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded/evt.total;
//Do something with upload progress
console.log(percentComplete);
}
}, false);
//Download progress
xhr.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded/evt.total;
//Do something with download progress
console.log(percentComplete);
}
}, false);
return xhr;
},
type: 'post',
url: route,//url to my script below
data: form_data, //some data, not used in script below
success: function(){
console.log('completed');
}
});
return false;
});
例如,我測試的PHP腳本的一部分:
<?php
usleep(10000000);
echo true;
?>
我現在的控制檯日誌首先顯示1,然後經過約10秒控制檯。日誌寫'完成'
簡單地說,我想在ajax請求正在進行(php usleep時間約10秒)顯示在控制檯的ajax請求百分比(這是可能的?)。
請幫忙。
我嘗試過,但結果相同。 – Vlatko
@ user1477508你能更好地描述問題嗎?你在控制檯中看到任何JS錯誤嗎?你可以在進度回調中設置斷點嗎?如果你的服務器腳本不發送任何'Content-Length'頭部,瀏覽器如何知道'evt.total'? – Raffaele
在控制檯,服務器腳本沒有錯誤如上,租約描述我需要添加.. – Vlatko