我正在开发基于sql数据库同步器的php控制台应用程序。 它基本上是从一个数据库到另一个数据库的更新。 控制台应用程序很好,但我想创建一个网页,其中包含10分钟作业的实时响应。 像:
Updating product#1 .... READY!
Updating product#2 ....
我的问题是如何使用AJAX执行此操作?是否有一些事件在php迭代内部发出响应而不是在它之后? 或者我必须重复一次AJAX请求?
谢谢!
答案 0 :(得分:1)
在PHP端没有调用事件,您可以在客户端使用它来触发JS函数。至少,它不可能轻松完成。当然你可以像Comet那样使用一些来获得真正的互动结果。但想想更容易做到如下: 您的php脚本将根据$ _GET param中的product_id,每次调用仅执行一个产品。 并且此脚本在继续请求的产品之后将返回下一个产品的ID以继续。 因此,您只需通过AJAX第一次调用您的proceed.php脚本,onComplete事件,此AJAX调用会显示您的消息“正在更新产品#1 ....就绪!”,获取下一个产品的ID以继续。直到一切都完成了:)
答案 1 :(得分:0)
没有这样的事件,但您可以在ajax调用期间获得进度百分比,如下所示
$.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)*100;
//Do something with upload progress
var per= Math.round( percentComplete );
//per gives you percentage of progress
}
}, false);
//Download progress
xhr.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = (evt.loaded / evt.total)*100;
//Do something with download progress
var per= Math.round( percentComplete );
//per gives you percentage complete of process
}
}, false);
return xhr;
},
url:'your url here',
data:{'data':data},
type:"POST",
success:function(n){
//ajax completion handler
}
});