解析通过AJAX POST格式问题返回的JSON

时间:2013-11-22 07:06:22

标签: javascript php jquery ajax json

我有一个php返回一些json以响应通过ajax函数发出的POST请求 在我的php函数中,我格式化这样的数据:

//json return
$return["answers"] = json_encode($result);
echo json_encode($return);

返回以下字符串:

answers: "[{"aa":"Purple","0":"Purple","ab":"Blue","1":"Blue","ac":"Red","2":"Red","ad":"Yellow","3":"Yellow"}]" 

这就是我试图抓住它来使用数据的地方:

$.ajax({
            type: "POST",
            url: "http://ldsmatch.com/pieces/functions/question.functions.php",
            dataType : 'JSON',
            data: dataString,
            success: function(data) {
                alert(data.answers[0]["aa"]);
            }       
        });

我一直在尝试提醒数据,以便在设置我需要的变量之前可以将其可视化,但是在正确格式化它时遇到了一些问题,因此它可以使用。

如果我提醒data.answers[0]那么它只显示字符串中的第一个字符,这是一个括号[如果我随后更改了数字,它将通过返回字符串中的每个字符。

我尝试了其他变体,例如:

data.answers[0]["aa"]   (this returns 'undefined' in the alert)
data.answers["aa"]      (this returns 'undefined' in the alert)
data.answers[0]         (this returns the first character of the string)

我觉得我很亲密,但却错过了一些东西。任何指导意见。

编辑:

感谢所有的建议。我删除了第二个json_encode,并能够使用data.answers[0].aa

进行解析

3 个答案:

答案 0 :(得分:0)

像这样使用parseJson

var json = $.parseJSON(data);
$(json).each(function(i,val){
    $.each(val,function(k,v){
      console.log(k+" : "+ v);     
    });
});

答案 1 :(得分:0)

成功:功能(数据){                 var json = $ .parseJSON(data);                 警报(json.answers [0] [ “AA”]);             }

答案 2 :(得分:0)

如果在PHP端删除双重编码怎么办?您有一个带有JSON字符串而不是对象的对象,第一个属性是对象本身,或者您可以在客户端显式解码“answers”属性,如上所述。