我有"条件内容"基于内容的类型,如下所示:
//--- Here goes a nice SQL where I get the content, this works ok. ---
if(mysqli_num_rows($niceSQL) > 0) {
while($something = mysqli_fetch_array($niceSQL)) {
$type = $something["type"];
if ("type" == "A") {
$data1 = $something["data1"];
$data2 = $something["data2"];
$data3 = $something["data3"];
$something_A = array(
"one" => $data1,
"two" => $data2,
"three" => $data3,
);
echo json_encode($something_A, JSON_FORCE_OBJECT);
} else if ("type" == "B") {
$data1 = $something["data1"];
$data2 = $something["data2"];
$data3 = $something["data3"];
$something_B = array(
"one" => $data1,
"two" => $data2,
"three" => $data3,
);
echo json_encode($something_B, JSON_FORCE_OBJECT);
}
}
}
我试图将每个数组转储为JSON,以便使用jQuery Each来处理它。
问题是所有得到的"打印" (回显)同时,因此AJAX响应是" parsererror "。我以这种方式得到这个错误:
(ajax and config here).fail(function( jqXHR, textStatus ) {
console.log( "Request failed: " + textStatus );
})
那么,我如何独立但一起打印每个$something_A
或$something_B
? Together意味着只有一个ajax请求,所以我可以使用jQuery Each来处理内容。
如果我只打印第一个$something_A
或第一个$something_B
,那么我可以执行"每个"循环(这就是为什么我假设PHP" json_encode"函数正常工作),但它对我没用(因为我只接收了许多&中的第一个& #34;出头"。)
注意:我可以更改转储的逻辑,而不是我如何获取内容(SQL + while)。
答案 0 :(得分:1)
首先,创建一个新数组:$result = [];
然后在while循环中,将echo json_encode($something_A, JSON_FORCE_OBJECT);
更改为$result[] = $something_A;
循环之后,使用:echo json_encode($result, JSON_FORCE_OBJECT);
答案 1 :(得分:1)
每个ajax请求只能发送一个json输出
创建一个外部主数组,它有2个属性'A'
和'B'
,每个属性都是空数组,然后将每一行推到适当的一行,然后循环回显主数组
$output= array(
'A'=>array(),
'B'=>array()
);
while($something = mysqli_fetch_array($niceSQL)) {
$type = $something["type"];
if ("type" == "A") {
.......
$output['A'][] = $something_A;
} else if ("type" == "B") {
......
$output['B'][] = $something_B;
}
}
echo json_encode($output);
然后在jQuery中你有一个具有2个属性的对象,每个属性都是一个数组
答案 2 :(得分:0)
如何将echo
放在脚本末尾?
echo json_encode($something_A, JSON_FORCE_OBJECT);
和echo json_encode($something_B, JSON_FORCE_OBJECT);
array_push($mySolutionArray, $something_)
。 echo $mySolutionArray
。不要忘记初始化$mySolutionArray