jQuery: как разобрать многомерный массив? - PullRequest
0 голосов
/ 08 апреля 2010

Я не уверен, является ли массив слишком глубоким или чем, но я не могу получить ничего, кроме ключей и неопределенных значений. Помогите пожалуйста!

Я использую 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 голосов
/ 08 апреля 2010

Одно из предложений, которое у меня есть, заключается в том, что ваш возвращенный json должен быть в том же формате независимо от количества возвращенных книг. Если у вас есть только одно совпадение, вы возвращаете массив, содержащий id, title, price, но если их несколько, вы возвращаете массив, содержащий один (?) Элемент книги, который является массивом id, title, price , Мне кажется, что вы всегда хотите, чтобы он возвращал массив книг, каждая из которых является объектом, содержащим id, title, price. Обратите внимание, что я исправил ряд незначительных проблем с вашим JavaScript. Отказ от ответственности: Я ни в коем случае не программист php - мой синтаксис может быть неверным.

Попробуйте это:

$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++;

}

Javascript

$("#search").change(function() {
  var searchTerm = $(this).val();
      $.post("/contentcreator/search_by_term", { search_term: searchTerm }, function(data) {
         $("#book_scroller").empty();
         for (var i = 0; i > data.length; i++) {
            var book = data[i];
            var row = '<li id="book_item_' + book.id + '">' + book.book_title +'</li>';
                $("#book_scroller").append(row);    
         };    
      }, "json");
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...