如何在jQuery中显示服务器脚本的进度?

Edw*_*uay 6 ajax jquery

使用此代码,我可以在服务器脚本运行时显示动画gif:

function calculateTotals() {
    $('#results').load('getResults.php', null, showStatusFinished);
    showLoadStatus();
}

function showLoadStatus() {
    $('#status').html('');
}


function showStatusFinished() {
    $('#status').html('Finished.');
}
Run Code Online (Sandbox Code Playgroud)

但是,我想显示脚本在多远的状态,例如"处理线路342的20000 ......"并将其计数直到完成为止.

我怎样才能做到这一点?我可以创建一个不断包含更新信息的服务器脚本,但是我在哪里放置命令来读取这个,比如每秒?

mat*_*msa 2

阅读您对安德鲁的回答的评论后。

你会读到这样的状态:

function getStatus() {
    $.getJSON("/status.php",{"session":0, "requestID":12345}, 
    function(data) { //data is the returned JSON object from the server {name:"value"}
          setStatus(data.status);
          window.setTimeout("getStatus()",intervalInMS)
    });
}
Run Code Online (Sandbox Code Playgroud)

使用此方法您可以在服务器上同时打开多个 XHR 请求。

您所有的 status.php 输出都是:

{"status":"We are done row 1040/45983459"}
Run Code Online (Sandbox Code Playgroud)

但是,您可以在响应中输出任意多的信息并进行相应的处理(例如提供进度条或执行动画......)

有关 $.getJSON 的更多信息,请参阅http://docs.jquery.com/Ajax/jQuery.getJSON