【发布时间】:2016-04-09 17:01:02
【问题描述】:
我想要做的是使用 jQuery/Ajax 向 PHP 脚本发出请求,并在每次 foreach 循环完成时返回状态更新。我想用输出做一个进度条。
我遇到的问题是 jQuery 只会在整个脚本完成后更新页面。有没有办法强制 jQuery 或 PHP 在每个循环上输出,而不仅仅是将其全部转储到 success 函数上。
jQuery(document).ready(function($) {
$(document).on('click','#fetch-snowfall-data a',function () {
$(this).text('Fetching Snowfall Data...');
$.ajax({
type: "GET",
async: true,
url: "url.php",
data:{},
dataType: "html",
success: function(response){
$("#response_container").append(response);
$('#fetch-snowfall-data a').text('Fetch Snowfall Data');
}
});
return false;
});
});
PHP
foreach ( $results['resorts'] as $resort ) {
//Do all the things here
$count++;
echo $count .'/'. $results['total_rows'];
}
【问题讨论】:
-
不是真的,您可能需要 SSE、Sockets 或为此进行轮询,您通常无法返回部分内容(但可以通过刷新)
-
一个简单的解决方案是添加
beforeSend:属性并放置一个函数,该函数将用旋转gif 或其他东西填充您的容器,这样至少人们会看到它正在做某事。您需要一个更复杂的 jquery:*.com/questions/19139613/… 才能获得实际进展。 -
@Rasclatt 我之前尝试过,但无法从中获得任何输出。它没有详细说明任何服务器端代码,所以我不确定如何构建输出
-
@adeneo 我尝试使用冲洗无济于事。我一直在研究 SSE,但还没有找到相关的示例或教程。如果您知道任何请分享
-
所以示例中列出的
console.log(percentComplete)在您的控制台中没有产生任何内容?