2015-09-22 69 views
1

我使用jQuery執行ajax請求,從數據庫檢索關於用戶位置(名稱,經緯度,地址..)信息的網站。我已經賺得了所有的結果爲關聯數組如何讀取從php傳遞給ajax jQuery的muiltidimensional關聯數組?

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "mydatabase"; 
$conn = mysql_connect($servername,$username,$password); 
if(!$conn){ 
    die('Could not connect' .mysql_error()); 

} 
mysql_select_db($dbname); 

$query = " SELECT * FROM userevent "; 
$result = mysql_query($query); 
$a = array(); 

while($row = mysql_fetch_array($result,MYSQL_ASSOC)){ 
    array_push($a,$row); 

} 
echo json_encode($a); 
mysql_close($conn); 

獲取後,我得到這個類型的數組:

Array 
(
    [0] => Array 
     (
      [ID] => 3823 
      [name] => Erik 
      [lat] => 63.2994 
      [lng] => 23.7497 
      [title] => b 
     ) 

    [1] => Array 
     (
      [ID] => 3824 
      [name] => George 
      [lat] => 43.2994 
      [lng] => 13.4494 
      [title] => a 

     ) 
) 

在我的js文件,我有這樣的:

function loadmap(){ 
    $.ajax ({ 
     url:'loaddata.php', 
     dataType:'json', 
     success: function(data){ 
      alert(""+data[0]); //DOESN'T WORK ??????? 
     }, 
    }) 
} 

如何我現在可以讀取我的數組嗎?

+0

如果可以的話,你應該[停止使用'mysql_ *'功能(http://stackoverflow.com/questions/12859942/why-shouldnt-i-使用MySQL的函數式的PHP)。 [這些擴展](http://php.net/manual/en/migration70.removed-exts-sapis.php)已在PHP 7中刪除。瞭解[編寫]​​(http://en.wikipedia.org/ wiki/Prepared_statement)語句[PDO](http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)並考慮使用PDO,[它確實不難](http://jayblanchard.net/demystifying_php_pdo.html)。 –

+0

只需在你的php文件中設置標題:'header(「Content-Type:application/json」);'jquery自動檢測內容類型 –

+1

console.log(data)in your success function to see what you're actually back back 。 –

回答

1

data很可能會以字符串形式返回,您可以使用JSON.parse將其變成JSON。

function loadmap(){ 
    $.ajax ({ 
     url:'loaddata.php', 
     dataType:'json', 
     success: function(data){ 
      data = JSON.parse(data); 
      alert(""+data[0]); 
     }, 
    }) 
} 
+1

不應在dataType設置時發生,並且如果它不可分析會觸發ajax錯誤 – charlietfl

1

請注意:使用print_r()功能打印出 json_encode() PHP預定義功能的輸出,而不是本地echo的。

PHP更新的代碼

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "mydatabase"; 
$conn = mysql_connect($servername,$username,$password); 
if(!$conn){ 
    die('Could not connect' .mysql_error()); 

} 
mysql_select_db($dbname); 

$query = " SELECT * FROM userevent "; 
$result = mysql_query($query); 
$a = array(); 

while($row = mysql_fetch_array($result,MYSQL_ASSOC)){ 
    array_push($a,$row); 

} 
print_r(json_encode($a)); 
mysql_close($conn); 

如果你已經使用json_encode功能你並不需要解析在客戶方的陣列。您可以使用點(。)運算符作爲普通javascript 對象訪問數組值。

的Javascript更新程式碼

function loadmap(){ 
    $.ajax ({ 
     url:'loaddata.php', 
     dataType:'json', 
     success: function(data){ 
      alert(data.ID); //this one will print the value of ID key in the array 
     }, 
    }) 
} 
相關問題