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

Javascript 如何将数组对象返回给jquery$.ajax调用?,javascript,php,jquery,arrays,ajax,Javascript,Php,Jquery,Arrays,Ajax,我试图将一个数组对象返回到我的jQueryAjax调用中,但它似乎以数组长度=1的字符串形式返回 PHP代码: $results = mysqli_query($link, $sql); if ($results->num_rows > 0) { while ($row = $results->fetch_assoc()) { $array = array($row['eventDate'], $row['time'] ,['data' =>

我试图将一个数组对象返回到我的jQueryAjax调用中,但它似乎以数组长度=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调用:

功能趋势(数据){

}

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

在本例中,我无法获取3个对象的数组,而无法获取3的array.length

任何帮助都将不胜感激


您应该收集所有数据并将其作为一个json结果返回,并添加正确的http头(由@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";
}

您应该收集所有数据并将其作为一个json结果返回,并添加一个正确的http头(由@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";
}

我认为,如果您使用jquery,那么您必须使用JSON.parse(),这样您的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);
}
});

我认为,如果您使用jquery,那么您必须使用JSON.parse(),这样您的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);
}
});


这是一个由3个元素组成的数组,怎么了?不清楚。当我调试data.length时,它返回1。由于某种原因,我无法返回3的数组,因为它是一个关联数组。请查看开始时的
[[
您应该执行
数据[0].length
看起来代码还打印出了3个单独的数组,而不是所有记录的集合。我想知道,这怎么不是JSON语法错误..data[0].length仍然显示1这是一个由3个元素组成的数组,有什么不对?不清楚。当我调试data.length时,它返回1,但由于某种原因,它无法返回3的数组,因为它是一个关联数组。请查看开始时的
[
您应该执行
数据[0].length
与所有记录的集合相比,代码似乎还打印出了3个单独的数组。我想知道,这怎么不是JSON语法错误..data[0]。length仍然显示1这很好,我还应该将else语句更改为与Javascript更兼容的语句,因此
if(data.length>0){
我在原来的问题中添加了一个屏幕截图,但仍然得到长度=1@user5451365尝试放置
标题('Content-Type:application/json')
在你的php文件的顶部。就是这样。非常感谢。我不知道标题。这很好,我还将把else语句更改为与Javascript更兼容的语句,因此
如果(data.length>0){
我已经为原始问题添加了一个屏幕截图,仍然得到长度=1@user5451365尝试放置
标题('Content-Type:application/json')
位于php文件的顶部。就是这样。非常感谢。我不知道标题。