2

これを検索しようとしましたが、何を探しているのかさえわかりません。私の問題はこれです:

$.getJSON('process.countfiles.php?action=getfiles', function(data) {
    $.each(data, function(name, value){
        $("#displayfile").load("process.files.php?file="+value, function(){
        });
    });
});

OK、私は 2 つの関数を持つスクリプト (process.countfiles.php) を持っています.1 - ファイルを数え、.dat ファイルにファイル リストを作成します。次に、2 番目は .dat ファイルを開き、ファイルを個別に処理します。

最初の部分はうまく機能するので、2 番目の部分に移りましょう... PHP から次のようにデータが渡されます。

PHP コード:

$fh = fopen($dirdatafn, "r"); 
    while (!feof($fh)){ 
        $data_file_line[] .= fgets($fh); 
    } 
    @fclose ($fh); 
    echo json_encode($data_file_line); 

JS に戻ります (jQuery は私がこれに使用しているフレームワークです) データは PHP からの $data_file_line の配列であり、問​​題なくデータを取得し、.each でそれらを分離し始める必要があります

問題は、一度に 1 つずつ処理したい場合に、7,000 以上すべてを同時にロードして、すべてを process.files.php に送信しようとすることです。

どんな助けでも大歓迎です。

ありがとう、ジェフ

4

2 に答える 2

1

JSONを提供すると、これを実行できる配列が返されます(私はテストしていません)。基本的に、各ファイルを個別に処理するには、成功のコールバックが発生するまで待ってから、次のファイルを処理する必要があります。

    var data_arr;
    $(function() {
        $.getJSON('process.countfiles.php?action=getfiles', function(data) {
            data_arr = data;
            requestFiles(data_arr[0])
        });
        function requestFiles(i) {

            $("#displayfile").load("process.files.php?file=" + data_arr[i], function() {
                if(i < data_arr.length) {
                    requestFiles(i + 1);
                }
            });
        }

    })
于 2012-04-04T22:59:20.253 に答える
1

"process.files.php?file="$("selector").load(); の代わりに、より一般的な $.ajax() メソッドを使用すると、jQuery に呼び出しを同期的に行うように指示できます。

交換

$("#displayfile").load("process.files.php?file="+value, function(){
        });

$.ajax("process.files.php?file="+value, {
        async: false, // this is true by default
        success: function(data) {
            $("#displayfile").html(data); // this is what you were doing by calling $.load
            // do other stuff
        }
     });
于 2012-04-04T22:55:46.487 に答える