2

试图搜索这个,虽然我什至不确定我在搜索什么。我的问题是这样的:

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

好的,我有一个带有 2 个函数的脚本 (process.countfiles.php),1 - 对文件进行计数并在 .dat 文件中构建一个文件列表。然后数字 2 打开 .dat 文件并单独处理文件。

第一部分效果很好,所以让我们转到第二部分......我有从 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 分隔它们

问题是,当我希望它一次处理一个时,它会尝试同时加载所有 7,000 多个并将它们全部发送到 process.files.php。

任何帮助,将不胜感激。

谢谢你,杰夫

4

2 回答 2

1

"process.files.php?file="如果您使用更通用的 $.ajax() 方法而不是 $("selector").load(); ,则可以告诉 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 回答
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 回答