我不确定数组是否太深或者是什么,但我似乎无法获得除了键和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");
});
谢谢!
答案 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++;
}