从多数组JSON响应循环遍历JQuery中的多个数组

时间:2014-07-18 08:04:48

标签: php jquery ajax json

我在错误的道路上吗?

我有一个ajax调用来上传一些文件。

然后我在PHP端创建一个数组并将其作为JSON发回。但我不确定JSON格式是否正确。

问题是我想用返回的JSON数据填充dataTable,但是我在读取数据时遇到了困难。如果它是一个单一的文件然后很好,它的工作原理,但只要它的多个文件

PHP代码

        $stmt = $db->prepare("SELECT * FROM {$table} WHERE uuid = :id");
        $stmt->execute(array(":id" => $id));
        $row = $stmt->fetch();
        $json = array();

        $json[] = $row;
        echo json_encode($json);
JQuery / AJAX调用方

$(document).ready(function() {
    $('#myfiles').on("change", function() {
        var myfiles = document.getElementById("myfiles");
        var files = myfiles.files;
        var data = new FormData();

        for (i = 0; i < files.length; i++) {
            data.append('file' + i, files[i]);
        }

        $.ajax({
            url: './inc/MediaScripts.php',
            type: 'POST',
            contentType: false,
            data: data,
            processData: false,
            cache: false
        }).done(function(html) {

            var t = $('#vidlib_dtable').DataTable();
            var obj = eval(html);
            $.each(obj, function(key,value) {
                t.row.add( [
                    value.name,
                    value.title,
                    value.path,
                    value.duration,
                    value.uploaded_date,
                    value.uploaded_by,
                    value.keyword,
                    value.comment,
                ] ).draw();
            });

        });
    });
});

原始返回包含更多列,因此dataTable中的上述列添加。

返回看起来像多个(奇异的)JSON数组。

  

[{ “的uuid”: “236”, “名称”: “Koala.jpg”}]   [{ “的uuid”: “237”, “名称”: “Lighthouse.jpg”}]

我想知道它是否应该采取类似这样的形状

  

[{“uuid”:“236”,“name”:“Koala.jpg”},{“uuid”:“237”,“name”:“Lighthouse.jpg”}]

如果我收到数据的格式很好,我该如何在JQuery端循环多个数组呢?

1 个答案:

答案 0 :(得分:1)

那是因为你回应了3个不同的JSON对象数组。 每次你的循环迭代你回显时,循环然后重新创建数组并回显新的JSON数组。

$json = array();
//forloop{ START
    $stmt = $db->prepare("SELECT * FROM {$table} WHERE uuid = :id");
    $stmt->execute(array(":id" => $id));
    $row = $stmt->fetch();
    array_push($json, $row);
//} END
echo json_encode($json);

在循环之前初始化数组,并在完全创建之后回显它。