echo json_encode到jquery

时间:2014-04-05 19:03:29

标签: php jquery json

我正在查看大量示例,但我无法弄清楚为什么我不能使用我的php代码传递的数组。我以前回应一个变量,它工作正常。但是,当我回显数组时,没有结果。

$arr= array('comment_id' => 100, 'color' =>'green');
echo json_encode($arr); 

在我的jquery

$.ajax( 
 {
      url : $("#dataSaveOpinion" + parameter).data('url'),
      type: "POST",
      data : postData,
      success:function(data, textStatus, jqXHR) 
          {
             var result = jQuery.parseJSON(data);
             $(this).attr('data-url',$("#comment" + parameter).data('url')+result[0]);

          },

result[0]未定义

5 个答案:

答案 0 :(得分:1)

在PHP中,json_encode()对关联数组(key => value)执行操作时,如果您希望将数组转换为JSON Object而不是JSON Array返回JSON Array您需要执行以下操作之一:

返回一个带有关联数组的数组:

$arr= array( array('comment_id' => 100, 'color' =>'green') );
echo json_encode($arr); 

这将返回:

[
  { comment_id: 100, color: 'green'  }
]

以这种方式在JavaScript中使用result[0]将JSON对象放在第一位置。

另一种方式(也是我喜欢的方式)是返回一个带有数组数组的关联数组:P,就像这样:

$arr= array( 'comments' => array( array('comment_id' => 100, 'color' =>'green') ));
echo json_encode($arr); 

这将返回:

{
  comments: [
    { comment_id: 100, color: 'green'  }
  ]
}

现在你可以用更具表现力的方式来引用结果,如下所示:

result.comments[0]

请务必将此添加到您的ajax请求中:dataType: 'JSON'以便代码知道它将发送和接收有效的json

答案 1 :(得分:0)

我认为你需要使用result['comment_id']

答案 2 :(得分:0)

$arr= array('comment_id' => 100, 'color' =>'green');的结果是映射关键字' comment_id'的关联数组。到100和'颜色'绿色'。因此,您必须使用密钥检索数据,在这种情况下,' comment_id'或者'绿色。'

尝试像这样检索comment_id:

result[comment_id]

如果数组是包含多个对象的顺序数组,则只能使用数字索引。

答案 3 :(得分:0)

我认为你的ajax函数需要dataType: 'json',

您的响应流程中还有一个JSON解析函数

var result = JSON.parse(data);

答案 4 :(得分:0)

尝试在回显之前设置内容类型

header('Content-Type: application/json');
echo json_encode($data);