gpt4 book ai didi

php - Jquery/Php 使用 Ajax POST 返回处理状态

转载 作者:行者123 更新时间:2023-12-01 07:48:28 25 4
gpt4 key购买 nike

我正在开发一个页面来处理 Excel 数据。

目前我有一个索引页面,我曾经通过 $.ajax POST 将 JSON 数据(文件名、选定的列、工作表等)提交到 PHP 页面进行处理(使用发布的选择迭代每一行)。但我想从处理页面得到一些进度响应。因为现在,它只是在后台提交和处理所有内容,而不知道它是否完成。

是否有某种方法可以:

  1. 重定向到处理页面以及 JSON POST 数据,而不是 ajax post?

或者

  • 从一个 PHP 页面返回多个 JSON 响应(例如启动、停止等)并在同一个 $.ajax 成功函数中获取这些响应?添加某种检查功能,例如
  • 如果最后一个响应行==开始,则显示图像

    ..过了一会儿(继续检查 json 响应..),

    如果最后一个响应行==完成,隐藏图像?

    我无法使用表单提交操作,因为我发送的是完整的 JSON 字符串而不是单独的输入值。

    我是否忽略了这里的某些内容,或者这根本不可能(以我的处理方式)?

    最佳答案

    您需要使用 ajax 调用不同的 PHP 文件来获取 session 的进度。我也这样做过一次,我是这样做的:

    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");
    }

    在启 Action 业的函数中,您只需设置超时

    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_write_close(),因为 session 一次只能在一个进程中打开。

    关于php - Jquery/Php 使用 Ajax POST 返回处理状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32890420/

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