JQuery(Mobile)/Ajax未定义返回变量
尽管有很多关于这方面的问题,但我似乎找不到适合我的情况的代码,每次运行这段代码时,我都会得到一个未定义的变量,而不是所需的返回JSON 我的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(
$.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的细微差别可能有点令人困惑。这个问题虽然很基本,似乎还没有研究过,但对我和其他人来说都很有教育意义。谢谢