这是由该 AJAX 返回的:
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) {
}
});
};
}
我想访问它们。尝试 console.log(data[0].filename);
但出现错误。
当只有一个 JSON 时,我得到 TypeError: data[0] is undefined
,而如果有多个 JSON(就像图中所示),则不会返回任何内容。
这是发送该对象的 PHP 函数:
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
foreach($query as $result){
$arr = array();
$arr['filename'] = $result->filename;
$arr['id'] = $result->fileid;
$arr['size'] = $result->conv_filesize;
echo json_encode($arr);
}
}
最佳答案
您似乎将多个 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 验证器。 ;)
关于php - 访问多个 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35798077/