gpt4 book ai didi

php - ajax php foreach循环在每次迭代后更新

转载 作者:行者123 更新时间:2023-12-01 02:53:26 24 4
gpt4 key购买 nike

我想做的是使用 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'];

}

最佳答案

感谢大家的帮助。我最终设法让这一切正常工作,并将准确分享我是如何做到这一点的,以利于其他人 future 的利益。

需要 3 个文件 - 您从中加载的页面、处理脚本和监听脚本。

您需要知道要处理多少行才能使一切正常工作。我从 load.php 中的 php 变量 $results['total_rows']; 加载我的变量

加载.php

       jQuery(document).ready(function($) {
setTimeout(getProgress,1000);
$(document).on('click','#fetch-snowfall-data a',function () {
$(this).text('Fetching Snowfall Data...');
$.ajax({
url: 'process.php',
success: function(data) {
$("#response_container2").append(data);
}
});
setTimeout(getProgress,3000);
return false;
});
function getProgress(){
$.ajax({
url: 'listen.php',
success: function(data) {
if(data<=<?php echo $results['total_rows']; ?> && data>=1){
console.log(data);
$('#response_container').html('<div id="progress"><div class="progress-bar" role="progressbar" style="width:'+ (data / <?php echo $results["total_rows"] ?>)*100 +'%">'+ data + '/' +<?php echo $results["total_rows"] ?> +'</div></div>');
setTimeout(getProgress,1000);
console.log('Repeat');
} else {
$('#fetch-snowfall-data a').text('Fetch Snowfall Data');
console.log('End');
}
}
});
}
});

流程.php

foreach ( $results['resorts'] as $resort ) { 

//Do all the things here you want to.

$count++;
session_start();
$_SESSION['progress'] = $count;
$_SESSION['total'] = $results['total_rows'];
session_write_close();
sleep(1);
}

unset($_SESSION['progress']);

Listen.php

session_start();
echo (!empty($_SESSION['progress']) ? $_SESSION['progress'] : '');

if (!empty($_SESSION['progress']) && $_SESSION['progress'] >= $_SESSION['total']) {
unset($_SESSION['progress']);
}

进度条的一些 CSS

#progress {
height: 20px;
margin-bottom: 20px;
/* overflow: hidden; */
background-color: #f5f5f5;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
}
.progress-bar {
float: left;
width: 0;
height: 100%;
font-size: 12px;
line-height: 20px;
color: #fff;
text-align: center;
background-color: #337ab7;
-webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
-webkit-transition: width .6s ease;
-o-transition: width .6s ease;
transition: width .6s ease;
}

关于php - ajax php foreach循环在每次迭代后更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34618991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com