尽管有很多问题我似乎无法找到适合我情况的代码,但每次运行此代码时,我都会得到一个未定义的变量而不是所需的返回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。
答案 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"