JQuery(Mobile)/ Ajax Undefined返回变量

时间:2013-02-21 15:02:11

标签: ajax jquery jquery-mobile

尽管有很多问题我似乎无法找到适合我情况的代码,但每次运行此代码时,我都会得到一个未定义的变量而不是所需的返回JSON。

我的AJAX代码是:

$.ajax({
    data: {"serial":account},
    url: 'http://127.0.0.1/MobilePHP/findCustomerName.php',
    dataType: 'json',
    success: function(data){
        window.alert(data);   
    }
});

我的PHP代码是:

    <?php
header("Access-Control-Allow-Origin: *");
header('Content-type: application/json');

include 'dbConfig.php';
include 'connectDB.php';

//$account = $_POST['serial'];

$account = 14;


$sth = mysql_query("SELECT customer_name AS Name FROM customer_details  WHERE auto_id = $account ");

$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $rows ['CustomerName'][] = $r;
}
echo json_encode($rows);


include 'closeDB.php';

?>

我的控制台中的JSON是:

{"CustomerName":[{"Name":"Tullaroan"}]}

我真的不确定为什么我无法访问这些变量,因为它似乎在控制台上返回了正确的JSON。

1 个答案:

答案 0 :(得分:1)

success函数中,data是一个具有单个属性的对象:CustomerName。要访问它,请使用data.CustomerName。该属性本身就是一个数组,因此您需要使用它们的索引访问其中的元素。

在您的示例中,您在阵列中有一个对象,因此要访问该对象,您需要data.CustomerName[0]。该对象也有一个属性:Name,所以为了得到实际的名称:data.CustomerName[0].Name,它将返回“Tullaroan”。

可能更容易将data对象的细分可视化为:

data = {"CustomerName":[{"Name":"Tullaroan"}]}
data.CustomerName = [{"Name":"Tullaroan"}]
data.CustomerName[0] = {"Name":"Tullaroan"}
data.CustomerName[0].Name = "Tullaroan"