2012-10-30 188 views
-1

都可以分成單獨的數組格式JSON字符串由PHP腳本返回? 我的JS代碼如何解析JSON數組?

function GetData(id){ 
    $.ajax({ 
     url: 'list.php', 
     data: 'id=' + id, 
     type: 'POST', 
     success: function(data){ 
      alert(data) 
      console.log(data) 
     } 
    }) 
} 

我list.php的

<?php 
$id = $_POST['id']; 
$connect = mysql_connect("localhost", "admin", "118326") or die(mysql_errno()); 
$db = mysql_select_db("flabers", $connect) or die(mysql_error()); 
$result = mysql_query("SELECT * FROM list WHERE id = '$id'") or die(mysql_error()); 
$array = mysql_fetch_assoc($result) or die(mysql_errno()); 
echo json_encode($array); 
?> 

返回JSON字符串

{"id":"88","country":"Korea, Japan, USA","brand":"Samsung, Sony, HTC"} 

如何得到兩個數組的國家和品牌?

+2

'data.country'?這不是一個數組,但只是一個字符串。 – deceze

+0

您正在使用[過時的數據庫API](http://stackoverflow.com/q/12859942/19068),並應使用[現代替換](http://php.net/manual/en/mysqlinfo.api。 choosing.php)。你也暴露了自己[SQL注入攻擊](http://bobby-tables.com/),一個現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-防止 - 注入 - 在PHP中)自己從。 – Quentin

+0

我知道,我只是無法創建陣列的問題,因爲它已經(但它不適用於主題) – Dima

回答

-1

以下面的方式解析json。

//var obj = JSON.parse(jsonstring); //javascript way 

var obj = jQuery.parseJSON(jsonstring); //jquery way 

alert(obj.country + " : " + obj.brand); 
+0

這是一個很長的路繞過內置到jQuery中的pollyfill。這是一個非常糟糕的方法來解決這個問題。 – Quentin

+0

@Quentin,我已經添加了jquery的方式以及閱讀您的評論後.. –

+0

哦,男人,非常感謝!對我的英語來說。 – Dima

1

用戶dataType:'json'

$.ajax({ 
    url: 'list.php', 
    data: 'id=' + id, 
    contentType: 'application/json', 
    type: 'POST', 
    dataType: 'json', 
    success: function(data){ 
     alert(data) 
     console.log(data) //access it like data.id, data.country etc 
    } 
}) 
+0

這是一個解決方法,當服務器有一個錯誤的內容類型。如果可能,應該在上游解決問題。 – Quentin

+0

alert(data.country)返回'undefined' – Dima

0

的PHP應通知客戶端,它在發送JSON而不是HTML(其中它在默認情況下)。

header('Content-Type: application/json'); 

jQuery將自動將其解析爲JavaScript對象。