使用jQuery / AJAX显示PHP JSON数据

时间:2013-05-22 20:08:51

标签: jquery ajax json

所以我在PHP方面有这个:

//enclosed in for loop start
$titleArray[] = $title;
$idsArray[] = $id;
//enclosed in for loop end

循环运行后,将填充数组,这里显示的是var_dump。然后我们对json进行编码并退出,将其作为jQuery的响应发送来处理。

var_dump($titleArray);
array(2) {
  [0]=>
  string(2) "T1"
  [1]=>
  string(2) "T2"
}

var_dump($idsArray);
array(2) {
  [0]=>
  string(2) "I1"
  [1]=>
  string(2) "I2"
}

$output = array('success' => true, 'type' => 'valid', 'titles' => ''.$titleArray.'', 'ids' => ''.$idsArray.'');
echo json_encode($output);
exit();

这是我遇到问题的地方。我似乎无法访问这些数组(标题/ ids)。答复是:

{"type":"valid","titles":"Array","ids":"Array"}

以下是处理响应的后期成功区域:

success: function(output) {
             var x = $.parseJSON(output);
                 if(x.type=='valid'){
                     $.each(x.titles, function(k, v) {
                         $("#output-area").append('<div id="'+v.ids+'" class="title">Title: '+v.titles+'</div>');
                     });
                 }
         }

此时应添加2个新div,因为数组中有2个项目。相反,我得到5个新添加的div,未定义为v.idsv.titles值。如何在这种情况下获得正确和期望的输出?

2 个答案:

答案 0 :(得分:1)

基本上,您已将Array传递给json_encode()

array('success' => true, 'type' => 'valid', 'titles' => $titleArray, 'ids' => $idsArray );

答案 1 :(得分:1)

创建单个数组

$data[] = array('id' => $id , 'title' => $title );
$output = array('success' => true, 'type' => 'valid', 'data' => $data );
echo json_encode($output);
exit();

在javascript中

success: function(output) {
             var x = $.parseJSON(output);
                 if(x.type=='valid'){
                     $.each(x.data, function(k, v) {
                         $("#output-area").append('<div id="'+v.id+'" class="title">Title: '+v.title+'</div>');
                     });
                 }
         }