1

次のようなPHPファイルに投稿リクエストを送信する単純なjquery関数があります。

$.post('/file.php',
{
     action: 'send'   
},

function(data, textStatus)
{     
     alert(data);
});

そしてPHPファイル:

<?php

/* Some SQL queries here */

echo 'action done';

/* echo response back to jquery and continue other actions here */

?>

jQuery はデフォルトで、アラートを出す前に PHP スクリプト全体を実行するまで待機します。PHPファイルの残りの部分を実行する前に、アクションが完了したことを警告する方法はありますか??

ありがとう

4

1 に答える 1

1

プレーンな Javascript ajax で可能です。リクエストが完了する前にデータが受信されると、イベントは 3 で発生しますonreadystatechangereadyState

以下の例でnewDataは、新しいデータが含まれます。XHR は実際にはこれまでのデータ全体を提供するため、何らかの処理を行う必要があります。したがってresponseText、新しいデータのみを知りたい場合は、最後のインデックスの記録を保持する必要があります。

var httpRequest, lastIndex = 0;

if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}

httpRequest.onreadystatechange = function() {
    if(httpRequest.readyState === 3) {
        var newData = httpRequest.responseText.substring(lastIndex);
        lastIndex = httpRequest.responseText.length;

        console.log(newData);
    } 
};

httpRequest.open('POST', '/file.php');
httpRequest.send('action=send');

jQuery ajax に関しては、この回答は jQuery でバインドできることを示唆していますreadystatechangeが、テストしていません。

于 2013-07-01T12:54:20.297 に答える