我正在查看大量示例,但我无法弄清楚为什么我不能使用我的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]
未定义
答案 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);