Одно из предложений, которое у меня есть, заключается в том, что ваш возвращенный 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");
});