访问多个JSON

时间:2016-03-04 14:06:08

标签: php arrays json ajax

在浏览器的控制台中,我有:enter image description here

这是由这个AJAX返回的:

tol

我想访问它们。尝试了function displayFiles(){ var classElements = document.querySelectorAll("table.folders-list tr.ui-selected td span"); var csrf = $('input[name=_token]').val(); for(var x = 0;x < classElements.length;x++){ var result; result = classElements[x].innerHTML; $.ajax({ async: false, method: 'POST', dataType: 'json', url: '../public/getfiles', data: { 'folder': result, "_token": csrf }, success: function(data) { } }); }; } ,但收到了错误。 当有一个JSON我得到console.log(data[0].filename);,而如果有多个(就像在图片中一样),则不返回任何内容。 这是发送该对象的PHP函数:

TypeError: data[0] is undefined

1 个答案:

答案 0 :(得分:3)

好像你把多个JSON字符串放在一起。这又不是有效的JSON。

您的输出看起来像{"x": 1}{"y": 2},需要[{"x": 1},{"y": 2}]

尝试通过一次调用json_encode()输出所有数据:

public function getFiles() {
    $folder = $_POST['folder'];
    $userid = Auth::id();
    $query = File::orderBy('created_at', 'desc')->where('userid', $userid)->where('folder', $folder)->get();
    // foreach for many result returned by $query
    $json = array();
    foreach($query as $result){
        $arr = array();
        $arr['filename'] = $result->filename;
        $arr['id'] = $result->fileid;
        $arr['size'] = $result->conv_filesize;
        $json[] = $arr;
    }    
    echo json_encode($json);
}

您也可以尝试使用JSON验证程序。 ;)