JQuery(Mobile)/Ajax未定义返回变量

JQuery(Mobile)/Ajax未定义返回变量,ajax,jquery,jquery-mobile,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(

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

我的AJAX代码是:

$.ajax({
    data: {"serial":account},
    url: 'http://127.0.0.1/MobilePHP/findCustomerName.php',
    dataType: 'json',
    success: function(data){
        window.alert(data);   
    }
});
    <?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';

?>
我的PHP代码是:

$.ajax({
    data: {"serial":account},
    url: 'http://127.0.0.1/MobilePHP/findCustomerName.php',
    dataType: 'json',
    success: function(data){
        window.alert(data);   
    }
});
    <?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。

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

在您的示例中,数组中只有一个对象,因此要访问该对象,您需要执行
data.CustomerName[0]
。该对象还有一个属性:
Name
,因此要获取实际名称,您需要执行:
data.CustomerName[0].Name
,它将返回“Tullaroan”

数据
对象的分解可视化可能更容易,如下所示:

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

您正在提醒
数据
,我们可以看到您实际使用的代码吗?您确定呼叫成功吗?使用fiddler或浏览器开发窗口的“网络”选项卡。你会看到发送和接收的请求,让我知道谢谢你的回答,我真的不太理解对象的格式,你解释得很好,我认为这对我以后会很有价值。对于那些失望的投票者,作为自我思考的程序员,将我的第一个原生Java Android应用程序迁移到基于web和可能的Cordova应用程序时,基于脚本的语言处理数组和JSON的细微差别可能有点令人困惑。这个问题虽然很基本,似乎还没有研究过,但对我和其他人来说都很有教育意义。谢谢