1

我正在使用 DataTables,它需要 JSON 对象的特定格式才能填充表。

它应该如下所示:

{"aaData": [
        [ "Trident", "Internet Explorer 5.1", "Win 95+", 4, "X" ],
        [ "Trident", "Internet Explorer 5.0", "Win 95+", 5, "C" ],
        [ "Trident", "Internet Explorer 5.5", "Win 95+", 5.5, "A" ],
        [ "Trident", "Internet Explorer 6.0", "Win 98+", 6, "A" ],
        [ "Trident", "Internet Explorer 7.0", "Win XP SP2+", 7, "A" ]
}

我已经尝试了数百种不同的方法,但无法得到类似于上面的内容,因此 DataTables 不接受它。

这是我最近的尝试之一:

$aaData["aaData"] = array(array());
$i=0;
while($r= mysql_fetch_assoc($sql)){
    $aaData[$i][] = $r["data1"];
            $aaData[$i][] = $r["data2"] ;
            $aaData[$i][] = $r["data3"] ;
    $aaData[$i][] = $r["data4"] ;
            $aaData[$i][] = $r["data5"] ;

            $i++;
}
$aaData=json_encode($aaData);
echo $aaData;

这给了我来自服务器的 JSON 响应(由 Firebug 验证),如下所示:

{"aaData":[
[]],
"0":["data1","data2","data3","data4","data5"],
"1":["data11","data21","data31","data41","data51"],
etc.....]
}

所以,我不需要密钥(0,1...),也不需要“[]]”的东西。我确实在这里和任何地方都看过类似的帖子,但没有找到任何对我有帮助的东西。我怎样才能摆脱它们?感谢你的协助。

4

1 回答 1

2

用这个

$aaData["aaData"] = array();
//$i=0;
while($r= mysql_fetch_assoc($sql)){
    $arr= array();
    $arr[] = $r["data1"];
    $arr[] = $r["data2"] ;
    $arr[] = $r["data3"] ;
    $arr[] = $r["data4"] ;
    $arr[] = $r["data5"] ;
    array_push($aaData["aaData"],$arr);
        //$i++;
}
$aaData=json_encode($aaData);
echo $aaData;

工作示例http://codepad.viper-7.com/gk2DO3

于 2013-03-26T12:14:26.570 回答