Jquery/Php使用Ajax POST返回处理状态
我正在处理Excel数据的页面 目前,我有一个索引页面,其中我曾经通过$.ajax POST将JSON数据(文件名、选定列、工作表等)提交到PHP页面进行处理(使用已发布的选择迭代每一行)。但我想从处理页面获得一些进展响应。因为现在,它只是在后台提交和处理所有内容,而不知道是否完成了 有什么方法可以:Jquery/Php使用Ajax POST返回处理状态,php,jquery,json,ajax,response,Php,Jquery,Json,Ajax,Response,我正在处理Excel数据的页面 目前,我有一个索引页面,其中我曾经通过$.ajax POST将JSON数据(文件名、选定列、工作表等)提交到PHP页面进行处理(使用已发布的选择迭代每一行)。但我想从处理页面获得一些进展响应。因为现在,它只是在后台提交和处理所有内容,而不知道是否完成了 有什么方法可以: 重定向到处理页面,以及JSON POST数据,而不是ajax POST 或 从一个PHP页面返回多个JSON响应(如started、stopped等),并在同一个$.ajax success函数中
我是否忽略了某些内容,或者这是不可能的(以我的处理方式)?您需要使用
ajax
调用另一个PHP
文件,从会话中获取进度。我也做过一次,我是这样做的:
session_start();
$_SESSION['progress'] = $progress;
session_write_close();
Javascript
function getProgress(){
//console.log("progress called");
$.get( "getprogress.php", function( data ) {
//console.log(data);
var p = data.progress;
if (p!=100){
//set your progressbar here
}
}, "json");
}
在启动作业的函数中,您只需设置一个超时
timeout = setInterval('getProgress()', 1000);
Getprogress.php
ob_start();
session_start();
session_write_close();
$output = array();
$output['progress'] = $_SESSION['progress'];
echo json_encode($output);
在执行实际工作的PHP
文件中,需要如下设置进度:
session_start();
$_SESSION['progress'] = $progress;
session_write_close();
记得使用
session\u write\u close()
,因为一次只能在一个进程中打开会话。加载程序听起来如何?我想了一下,但是如果它是一个包含10k记录的excel文件,最好能看到他当前在哪一行而不是在加载10分钟?Genius!我来看看这个,试试看!谢谢(可能不是最有效的方式,但是嘿…)没问题,希望它对你有用,我当时搜索了很多,我也相信这不是最有效的方式,但找不到更好的:)