如何将数组对象返回到jquery $ .ajax调用?

时间:2015-12-04 16:38:25

标签: javascript php jquery arrays ajax

我试图将一个数组对象返回到我的Jquery ajax调用,但它似乎返回一个String,其长度为数组= 1

PHP代码:

$results = mysqli_query($link, $sql);

if ($results->num_rows > 0) {

    while ($row = $results->fetch_assoc()) {


        $array = array($row['eventDate'], $row['time'] ,['data' => $row['time']])   ;

        echo json_encode($array) ;
    }
} else {
    echo "0 results";
}

开发人员工具中的响应显示:

["12_03_2015","0:00:00",{"data":"0:00:00"}]["12_03_2015","0:00:00",{"data":"0:00:00"}]["12_03_2015","0:00:00",{"data":"0:00:00"}]

我的Ajax电话:

功能趋势(数据){

$.ajax({
    url: "trendData.php",
    cache: true,
    type: "POST",
    data: {arr:data},

    success: function (data) {
        originalData=[];

        originalData.push(data)
        trender(data)
    }
});

}

在网络的预览窗口中,它显示一个数组:

enter image description here

我无法得到一个数组,在这个例子中,有3个对象并得到array.length为3

非常感谢任何帮助。

enter image description here

2 个答案:

答案 0 :(得分:3)

您应收集所有数据并将其作为一个json结果返回并添加正确的http-header(由@Flosculus建议),以便识别json格式:

$results = mysqli_query($link, $sql);
$data = array();

if ($results->num_rows > 0) {
    while ($row = $results->fetch_assoc()) {
        $data[] = array($row['eventDate'], $row['time'] ,['data' => $row['time']])   ;        
    }

    header('Content-Type: application/json');
    echo json_encode($data) ;
} else {
    echo "0 results";
}

答案 1 :(得分:0)

我认为你必须使用 JSON.parse(),如果你使用jquery所以你的js脚本看起来像

$.ajax({
url: "trendData.php",
cache: true,
type: "POST",
data: {arr:data},

success: function (data) {
    var data = JSON.parse(data);

    //see length of array
    console.log(data.length);
}
});