ajax json解码返回undefined不是数据

时间:2011-07-28 01:16:14

标签: php ajax json

我正在尝试通过ajax从PHP脚本中提取json数据,但它无法正常工作。

while ($row = mysql_fetch_array($result)) {
    $response = array(
    'hello' => $row['name']
    );


    $responses[] = $response;

}

echo json_encode($responses);

然后我使用这个JavaScript

$('.clickme').click(function() {
    $.ajax({
    url: 'http://example.com/testFixGet.php?department=1',
    dataType: 'json',
    data: 'manufacturer=alpine,kicker',
    success: function(json) {
            alert(json['hello']);
     $('.result_new').html(json);
     }
});
});

对话框显示:'未定义'

但是,如果我实际上加载了php页面,那么数据将被json解码,它看起来像这样:

[{"hello":"Rand McNally Soft Case for Most 5\" GPS"}]

3 个答案:

答案 0 :(得分:0)

您是否设置了内容类型?

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

顺便说一下

[{"hello":"Rand McNally Soft Case for Most 5\" GPS"}]

它是一个数组,所以它将是

alert(json[0]["hello"]);

循环

var bar = [{"a":"1"},{"a":"2"},{"a":"3"}]
$.each( bar, function(i, jObj){
   alert( jObj.a );

});

答案 1 :(得分:0)

您会注意到您的JSON有效内容包含一个包含一个对象元素的数组。尝试

alert(json[0]['hello']);

此外,getJSON()更简洁

$('.clickme').click(function() {
    $.getJSON('http://example.com/testFixGet.php', {
        department: 1,
        manufacturer: 'alpine,kicker'
    }, function(json) {
        // loop over results
        for (var i = 0; i < json.length; i++) {
            var response = json[i];
            console.log(response);
        }
    });
});

答案 2 :(得分:0)

试试这个:

$('.clickme').click(function() {        
  $.getJSON('testFixGet.php', { manufacturer: "alpine,kicker", department: "1" },  function(json) {                     
            alert(json[0].hello);   
            $('.result_new').html(json);
  }  );
}