【问题标题】:how to read a muiltidimensional associative array passed from php to ajax jQuery?如何读取从 php 传递到 ajax jQuery 的多维关联数组?
【发布时间】:2015-09-22 20:45:11
【问题描述】:

我正在开发一个站点,该站点通过使用 jQuery 执行的 ajax 请求从数据库中检索有关用户位置(姓名、纬度、lng、地址..)的信息。我已将所有结果提取到关联数组中

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase"; 
$conn = mysql_connect($servername,$username,$password);
if(!$conn){
    die('Could not connect' .mysql_error());

}
mysql_select_db($dbname);

$query = " SELECT * FROM userevent ";
$result = mysql_query($query);
$a = array();

while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
    array_push($a,$row);

}
echo json_encode($a);
mysql_close($conn);

获取后我得到了这种类型的数组:

Array
(
    [0] => Array
        (
            [ID] => 3823
            [name] => Erik 
            [lat] => 63.2994
            [lng] => 23.7497
            [title] => b
        )

    [1] => Array
        (
            [ID] => 3824
            [name] => George
            [lat] => 43.2994
            [lng] => 13.4494
            [title] => a

        )
  )

在我的 .js 文件中,我有这个:

function loadmap(){
    $.ajax ({
        url:'loaddata.php',
        dataType:'json',
        success: function(data){
           alert(""+data[0]); //DOESN'T WORK ???????
        },
    })
}

我现在如何读取我的数组?

【问题讨论】:

  • 如果可以的话,你应该stop using mysql_* functionsThese extensions 已在 PHP 7 中删除。了解PDOMySQLiprepared 语句并考虑使用 PDO,it's really not hard
  • 只需在你的 php 文件中设置标题:header("Content-Type: application/json"); jquery 自动检测内容类型
  • console.log(data) 在您的成功函数中查看您实际返回的内容。
  • 警报甚至触发了吗?需要检查浏览器开发工具网络中的实际请求以查看实际返回的内容、状态等

标签: javascript php jquery arrays ajax


【解决方案1】:

data 可能会以字符串形式返回,您可以使用JSON.parse 将其转换为 JSON。

function loadmap(){
    $.ajax ({
        url:'loaddata.php',
        dataType:'json',
        success: function(data){
           data = JSON.parse(data);
           alert(""+data[0]);
        },
    })
}

【讨论】:

  • 在设置 dataType 时不应该发生,如果它不可解析会触发 ajax 错误
【解决方案2】:

注意:使用print_r() 函数打印输出 json_encode()php 预定义函数而不是原生的echo

PHP 更新代码

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase"; 
$conn = mysql_connect($servername,$username,$password);
if(!$conn){
    die('Could not connect' .mysql_error());

}
mysql_select_db($dbname);

$query = " SELECT * FROM userevent ";
$result = mysql_query($query);
$a = array();

while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
    array_push($a,$row);

}
print_r(json_encode($a));
mysql_close($conn);

如果您已经在使用json_encode 函数,则无需在客户端解析数组。您可以像普通的 javascript 一样访问数组值 使用点 (.) 运算符的对象。

Javascript 更新代码 sn-p

function loadmap(){
    $.ajax ({
        url:'loaddata.php',
        dataType:'json',
        success: function(data){
           alert(data.ID); //this one will print the value of ID key in the array
        },
    })
}

【讨论】:

    猜你喜欢
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多