2012-10-30 190 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对象。