簡體   English   中英

Jquery / Php使用Ajax POST返回處理狀態

[英]Jquery/Php returning processing status with Ajax POST

我正在處理一個處理Excel數據的頁面。

目前我有一個索引頁面,我曾經通過$ .ajax POST將一個JSON數據(文件名,選定列,工作表,...)提交到PHP頁面進行處理(迭代每一行都有已發布的選擇)。 但我想從處理頁面得到一些進展響應。 因為現在,它只是提交並處理后台的所有內容,而不知道它是否已完成。

有什么方法可以:

  1. 重定向到處理頁面,以及JSON POST數據,而不是ajax帖子?

要么

  1. 從一個PHP頁面返回多個JSON響應(如啟動,停止,...)並在同一$ .ajax成功函數中獲取這些響應? 添加某種檢查功能

如果最后響應行==開始,則顯示圖像

..過了一會兒(繼續檢查json的反應..),

如果最后一個響應行==完成,隱藏圖像?

我無法使用表單提交操作,因為我發送的是完整的JSON字符串而不是單獨的輸入值。

我在這里忽略了什么,或者這是不可能的(用我的處理方式)?

您需要對不同的PHP文件使用ajax調用,以獲取會話的進度。 我也這樣做了一次,我這樣做了:

使用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

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()因為會話一次只能在一個進程中打開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM