我在错误的道路上吗?
我有一个ajax调用来上传一些文件。
然后我在PHP端创建一个数组并将其作为JSON发回。但我不确定JSON格式是否正确。
问题是我想用返回的JSON数据填充dataTable,但是我在读取数据时遇到了困难。如果它是一个单一的文件然后很好,它的工作原理,但只要它的多个文件
PHP代码
JQuery / AJAX调用方$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);
$(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端循环多个数组呢?
答案 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);
在循环之前初始化数组,并在完全创建之后回显它。