dqq9695 2014-07-18 08:04
浏览 156
已采纳

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

Am I on the wrong path here?

I have a ajax call to upload some files.

I then create a array on the PHP side and send it back as JSON. But im not sure if the JSON format is correct.

Problem is I want to populate a dataTable with the returned JSON data, but I having difficulty reading the data. If its a single file then its fine and it works, but as soon as its more than one file

PHP CODE

        $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);

on the JQuery/AJAX call side

$(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();
            });

        });
    });
});

The original return has more columns, hence the above columns in the dataTable add.

The return looks like multiple (singular) JSON arrays.

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

I was wondering if it should not take the shape of something like this

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

If the format that I receive the data in is fine, how do I go about looping trhough the multiple arrays on the JQuery side?

  • 写回答

1条回答 默认 最新

  • douren6035 2014-07-18 08:44
    关注

    That's because you are echo'ing 3 different JSON object arrays. Each time your loop iterates you echo, the loop then re-creates the array and echo's the new JSON array.

    $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);
    

    Initialize your array before the loop, and echo it after it's been fully created.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面