从php获取JSON编码变量

时间:2011-03-27 19:41:35

标签: php javascript jquery ajax json

我有这个PHP代码:

$query = mysql_query("SELECT * FROM table WHERE id=$id");
while($item = mysql_fetch_assoc($query)){
    $dataArray['var1'] = $item['var1'];
    $dataArray['var2'] = $item['var2'];
    $dataArray['var3'] = $item['var3'];
    array_push($return_arr,$dataArray);
}

echo json_encode($return_arr);

它位于我的ajax.php文件

然后我使用jquery通过ajax请求发送id:

$.ajax({
    type: "POST",
    url: 'ajax.php',
    data: 'id='+id,
    success: function(data) { 
        alert(data);
    }
 });

它提醒我:[{"var1":"somevarhere","var2":"somevarhere2","var3":"somevarhere3"}]

有人可以告诉我,我可以如何访问前。 var3获取somevarhere3

感谢

3 个答案:

答案 0 :(得分:4)

根据jQuery.ajax的文档,根据传递给dataType jQuery.Ajax 选项的值,对其作为第一个参数接收的数据进行解释。

如果您为该参数传递'json'该怎么办?
像这样:

$.ajax({
    type: "POST",
    url: 'ajax.php',
    data: 'id='+id,
    dataType: 'json', 
    success: function(data) { 
        alert(data);
    }
 });

执行此操作时,jQuery.ajax应将服务器返回的数据解释为JSON。


另外,文档说如果没有指定dataType (引用)

  

jQuery将尝试根据它推断它   响应的MIME类型

所以,另一个解决方案是从PHP代码(参见The right JSON content type?返回一些JSON内容类型,如下所示:

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

在做回声之前。

而且,jQuery.ajax应该将服务器返回的数据解释为JSON。

答案 1 :(得分:1)

好的,我找到了解决方案。感谢Pascal MARTIN我有了解析结果的想法,所以我使用了这个:

data = data.substring(1,data.length-1);
data = $.parseJSON(data);
alert(data.var3);

第一行删除[], 第二行将JSON解析为Object, 和第三行访问属性

答案 2 :(得分:0)

应该能够像这样访问它:

data[0].var3

其中0是您要访问的数组中项目的索引。