如何从AJAX调用中检索数组?

时间:2017-11-14 20:44:16

标签: php sql ajax

我做了一个需要返回的Ajax调用(成功后:...)一个表示SQL查询的多维数组:

$.ajax({ url: 'http://localhost/Project/ajaxmethod.php',
                        data: {action: this.title},
                        type: 'post',
                        success: function(data) {

                                    //I need to use the data array here.
                        });

以下是调用的方法:

<?php

    $bdd = new PDO('mysql:host=localhost;dbname=DATABASE;charset=utf8', 'root', '');


    $req = $bdd->query("SELECT column1, column2, column3 FROM TABLE ");

    $data = ... //Here I need to transform the previous request into a multidimensional array. 
               //For exemple data[3][2] will contain the value within the third row of the second column

    echo $data; //returning the array
}

由于

2 个答案:

答案 0 :(得分:4)

<强>问题

您正在尝试返回am数组。但是,由于AJAX调用适用于HTTP协议,因此通常只能传输文本。所以你的ajaxmethod.php将打印数组和渲染页面,即文本将在显示时返回,而不是数组。

<强>解决方案

使用json_encode()(PHP)将数组转换为JSON对象并返回。然后使用JSON.parse()(JavaScript)在进行ajax调用的页面上对其进行解码。这将给出一个数组。

<强>代码

$.ajax({ url: 'http://localhost/Project/ajaxmethod.php',
                        data: {action: this.title},
                        type: 'post',
                        success: function(data) {

                                    //I need to use the data array here.
   var array = JSON.parse(data); //This is the array you want
});

...

<?php

    $bdd = new PDO('mysql:host=localhost;dbname=DATABASE;charset=utf8', 'root', '');


    $req = $bdd->query("SELECT column1, column2, column3 FROM TABLE ");

    $data = ... //Here I need to transform the previous request into a multidimensional array. 
               //For exemple data[3][2] will contain the value within the third row of the second column

    echo json_encode($data) //returning the array
}

答案 1 :(得分:3)

你不能只回显一个数组(你不能,它不是一个简单的数组)。

幸运的是,有一种叫做JSON的东西。在PHP中,您可以将所需的所有信息(在本例中为数据库中的行)存储在一个大型数组中,然后执行echo json_encode($array);

在Javascript方面,您将$.ajax更改为$.getJSON,以便jQuery也了解我们正在谈论JSON,等等,您有一个很好的PHP数组javascript版本。

// I am not familiar with PDO, but something along these lines:
$allData = $req->fetchAll();
echo json_encode($allData); // Now you output a JSON version of the array

然后是javascript

$.getJSON(
    'http://localhost/Project/ajaxmethod.php',
    {action: this.title},
    function(response) {
        // And in 'response' you now have a ready to use JS object)
        console.log(response);
 });

*如果您愿意,也可以使用$.ajax(),只需添加dataType: 'json