jQuery:如何解析多维数组?

时间:2010-04-08 12:02:29

标签: php jquery ajax

我不确定数组是否太深或者是什么,但我似乎无法获得除了键和undefines之外的任何东西。求救!

我正在使用Codeigniter进行开发。这是PHP然后是jQuery:

 $term = $this->input->post('search_term');

  $this->db->like('book_title', $term);

  $search_query = $this->db->get('books');

  $return = array();

  $i = 0;

  if ($search_query->num_rows() > 1) {

   foreach($search_query->result() as $s) {

    $return['books']['book_id'] = $s->book_id;
    $return['books']['book_title'] = $s->book_title;
    $return['books']['book_price'] = $s->book_price;

    $i++;

   }

  } elseif ($search_query->num_rows() == 1) {

    echo 1;

    $i = 0;

    $return['book_id'] = $search_query->row('book_id');
    $return['book_title'] = $search_query->row('book_title');
    $return['book_price'] = $search_query->row('book_price');


  } elseif ($search_query->num_rows() == 0) {

    echo 0;

  }



  echo json_encode($return);

的Javascript

$("#search").change(function() {

  var searchTerm = $(this).val();

  $.post("/contentcreator/search_by_term", { search_term: searchTerm }, function(data) {

     $("#book_scroller").empty();

     var lengthHolder = data.books;

     for (var i = 0; i > data.books.length; i++) {

         var row = '<li id="book_item_' + l + '">' + data.books['book_title'] +'</li>';

         $("#book_scroller").append(row);


     };

     i++;


  }, "json");

});

谢谢!

1 个答案:

答案 0 :(得分:0)

我的一个建议是,无论返回的书籍数量多少,您返回的json都应采用相同的格式。如果只有一个匹配项,则设置它的方式,返回包含id, title, price的数组,但是如果有多个数组,则返回包含单个(?)项目书籍的数组,该数组是{ {1}}。在我看来,你总是希望它返回一系列书籍 - 每一本书都是一个包含id, title, price的对象。请注意,我也使用您的javascript修复了一些小问题。 免责声明:我不是一个php程序员 - 我的语法肯定是错的。

试试这个:

id, title, price

的Javascript

$i = 0;

foreach($search_query->result() as $s) {

    $return[$i]['book_id'] = $s->book_id;
    $return[$i]['book_title'] = $s->book_title;
    $return[$i]['book_price'] = $s->book_price;

    $i++;

}