我想定期检查PHP脚本的状态并在浏览器上显示它.这是用于发布的jQuery.
@H_502_2@$(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,我可以在每个echo之后使用flush()和obflush()显示状态.也许是因为回调在输出之前等待脚本完全执行?
有没有办法修改现有的jQuery .post来做到这一点?我看到一些使用.ajax的例子,但不是.post.
如果.ajax是唯一的方法,我将如何修改此代码?
谢谢!
编辑:
跑了!希望有人会觉得这很有帮助. (你可以删除console.log)
的test.html
@H_502_2@
TEST$.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+"
done!
")}
});
test.PHP的
@H_502_2@<?PHP
for($i = 0; $i<20 ; $i++){
sleep(1);
echo $i."";
flush();
ob_flush();
}
?>
@H_403_23@
post是ajax的快捷方式(类型:post),没什么不同.
获取进度报告有一些方法.我现在最简单的就是将2 ajax请求1发送到同一页面来运行你的PHP脚本并将状态存储在会话中,将另一个存储到读取状态的不同页面从会话中打印出来供用户使用.
更新:
哦,我的坏会话不会被写下来,直到PHP脚本完成.
您可以尝试将状态写入文件并从中读取,如下所示:
task.PHP
@H_502_2@for ($i = 0; $i < 10; $i++) {
echo($i . "
");
file_put_contents('progress',$i);
sleep(2);
}
progress.PHP
@H_502_2@if (file_exists('progress') && is_readable('progress'))
echo file_get_contents('progress');
else
echo(-1);
和脚本:
@H_502_2@
$(document).ready(function () {
task();
getProgress();
});
function task() {
$.ajax({
url: 'http://localhost/test/progress/task.PHP',success: function (data) {
console.log('Task is over :' + data);
}
});
}
function getProgress() {
$.ajax({
url: 'http://localhost/test/progress/progress.PHP',success: function (data) {
data = parseInt(data);
if (data != 9) {
console.log('progress :' + data);
setTimeout(function () {
getProgress();
},1000);
}
}
});
}
但是这是一个多用户环境,这会导致问题.
所以你能做的最好的事情是将状态存储在以下其中一个中:
>使用数据库>使用memcache>使用APC
@H_403_23@
@H_403_23@
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。