0

我有一个奇怪的问题..

当我尝试使用相应的数字 [0]、[1] 等访问我的 json 代码时。我只得到对象的第一个字符。

首先我的代码:

test2.php

if(isset($_POST['getCustomersArray'])){
$runQuery = mysql_query($Query) or
        die("SQL: $Query)<br />".mysql_error()); 
$numrows = mysql_num_rows($runQuery); 
$array = array(array());

for($i = 0;$i <= 2; $i++){
    $row = mysql_fetch_array($runQuery);
    $array[$i]['namn'] = $row['fornamn'];

}
    print json_encode($array);
}

脚本文件.js

$.ajax({
    type:"POST",
    url: "test2.php",
    data: "getCustomersArray=true",
    datatype: "JSON",
    cache: false,
    success: function(json) {
            console.log(json[0]);
     }
});

结果(来自 console.log(json[0])):

[

来自 console.log(json) 的结果:

[{"namn":"the first name"},{"namn":"The secound name"},{"namn":"the third name"}]

我不确定为什么有方括号,但也许应该有?

我已经对这个问题感到困惑有一段时间了,我确信它有些愚蠢。请帮忙。

4

3 回答 3

6

您在 AJAX 设置中有一个不正确的选项,

datatype: "json",

它应该是:

dataType: "json",
于 2012-11-08T16:28:00.630 回答
1
datatype: "JSON",

应该是

dataType: "json",  // json in lowercase and T has to be captalized
于 2012-11-08T16:30:21.233 回答
1

确保您有以下代码:

if(isset($_POST['getCustomersArray'])){
$runQuery = mysql_query($Query) or
    die("SQL: $Query)<br />".mysql_error()); 
$numrows = mysql_num_rows($runQuery); 
$array = array(array());

for($i = 0;$i <= 2; $i++){
    $row = mysql_fetch_array($runQuery);
    $array[$i]['namn'] = $row['fornamn'];
}
header("Content-Type: application/json; charset=UTF-8");
print json_encode($array);
}

在这里,您需要将 content-type 设置为 application/json 并设置正确的字符集以避免任何跨浏览器问题。看看我网站上的以下教程,它应该涵盖所有这些内容,也许还有一些对您的代码的改进:PHP jQuery Search Tutorial - using JSON object the proper way

希望这可以帮助 :)

于 2012-11-08T16:32:22.520 回答