2013-02-21 34 views
0

儘管關於此的許多問題,我似乎無法找到一些代碼,我的情況,我每次運行此代碼,我結束了一個不確定的變量,而不是期望返回的JSON的時間工作。的JQuery(移動)/阿賈克斯未定義返回的變量

我的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

你只是提醒'data',我們可以看到代碼*使用*呢? – 2013-02-21 15:03:21

+0

你確定通話成功嗎?使用小提琴手或瀏覽器開發窗口的網絡選項卡。你會看到發送和接收的請求,讓我知道 – Khodor 2013-02-21 15:09:55

回答

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" 
+0

感謝你的答案,我真的不明白對象的格式正確,你解釋得很好,我認爲將來對我來說將是有價值的。 – 2013-02-21 15:21:38

+0

對於羽絨投票者來說,作爲自我思考編碼器將我的第一個本地Java Android應用程序遷移到基於Web的應用程序和潛在的Cordova應用程序,基於腳本的語言處理數組和JSON的細微差別可能會有點混亂。這個問題雖然基本,看似沒有被發現,但對我和其他人都很有教育意義。謝謝 – 2013-02-21 15:30:00