【发布时间】:2012-03-07 21:25:36
【问题描述】:
我正在使用 ajax 请求和会话变量来更新进度条。当我的程序执行耗时的操作(例如发送许多电子邮件等)时,它只需设置正确的会话变量(其中包含进度值)。此操作由下面代码中的函数 post() 启动。
同时,第二个函数 ask() 每 500 毫秒循环执行一次。它应该实时返回当前进度。这就是问题所在:ask() 发送的每个请求都在等待 post() 函数发送的请求完成。有趣的是,如果我设置一些像 google.com 这样的 URL 而不是 url/to/progress 它工作得很好,只是它不是我想要的:)。这意味着问题出在服务器端。
不确定它是否重要,但我使用的是 Yii 框架。
下面的所有代码都只是草稿(但可以工作),其唯一目的是说明我的意思。
提前致谢。
对不起我的英语不好:)
查看部分:
<script type="text/javascript">
function ask() {
var d = new Date();
var time = d.getTime();
$.ajax({
type: 'get',
url: '/url/to/progress' + '?time=' + time,
success: function(data) {
$("#progress").html(data);
}
})
}
function post() {
var d = new Date();
var time = d.getTime();
$.ajax({
type: 'post',
url: '/url/to/post' + '?time=' + time,
data: {"some": "data"},
success: function(data) {alert(data)}
});
}
$("#test").click(
function() {
post();
var progress = setInterval("ask();", 500);
}
);
</script>
控制器部分:
public function actionPost($time) {
sleep(5); // time consuming operation
echo $time . ' : ' . microtime();
exit;
}
public function actionProgress($time) {
echo $time . ' : ' . microtime();
exit;
}
【问题讨论】:
-
您从服务器得到的响应是什么?检查开发工具 > 网络 > xhr 请求
标签: php jquery post request progress