我想定期檢查php腳本的狀態並將其顯示在瀏覽器中。這是用於發佈的jQuery。獲取由jQuery調用的PHP腳本的進度post
$(document).ready(function() {
$("#tempbut").click(function(event){
$('#loader').show();
$('#mainarea').hide('fast');
$.post(
"template.php",
{
guide : $('#guide').val(),
title : $('#title').val()
},
function(data) {
$('#mainarea').empty();
$('#loader').fadeOut('slow');
$('#mainarea').append(data);
$('#mainarea').show('slow');
}
);
});
});
在PHP腳本(未公佈),我贊同語句,如「建設的要求......」,「發送的請求......」通知進度的用戶。如果我沒有使用jQuery post,我將能夠在每個回顯後使用flush()和obflush()顯示狀態。也許是因爲回調在輸出之前等待腳本完全執行?
有沒有辦法修改現有的jQuery .post來做到這一點?我看到一些使用.ajax的例子,但不是.post。
如果.ajax是唯一的方法來做到這一點我將如何修改此代碼?
謝謝!
編輯: 它運行!希望有人會發現這有幫助。 (你可以刪除的console.log)
的test.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>TEST</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1" />
<script src="http://code.jquery.com/jquery-2.1.0.js"></script>
<script>
$.ajax({
url: "test.php",
xhrFields: {
onprogress: function(e) {
console.log(e.target.responseText)
$("body").html(e.target.responseText)
if (e.lengthComputable) {
console.log(e.loaded/e.total * 100 + '%');
}
}
},
success: function(text) {
console.log(text)
$("body").html(text+"<h1>done!</h1>")
}
});
</script>
</head>
<body>
<div id="derp">TEST!</div>
</body>
</html>
test.php的
<?php
for($i = 0; $i<20 ; $i++){
sleep(1);
echo $i."</br>";
flush();
ob_flush();
}
?>
給予好評給你呢! – MonkeyZeus