为什么我从文本输入中看不到任何值建议。我已经使用自动完成代码与JSON和jQuery。但是文本输入中没有显示任何值
书店/视图/管理/ auto_complete.php
<script>
$('#swSearch').keypress(function () {
var dataObj = $(this).closest('form').serializeArray();
$.ajax({
url: 'http://localhost/boostore/admin_d_book_groups/search',
data: dataObj,
dataType: 'json',
success: function (data) {
$("#suggestion_tab").html('');
$.each(data.name, function (a, b) {
$("#suggestion_tab").append('<li>' + data.b + '</li>');
});
// Display the results
///alert(data);
},
"error": function (x, y, z) {
// callback to run if an error occurs
alert("An error has occured:\n" + x + "\n" + y + "\n" + z);
}
});
});
</script>
<div id="swSearch">
<form>
<input type="text" value="" id="swSearch" class="swSearch" />
</form>
<div class="suggestion_tab" id="suggestion_tab"></div>
</div>
Admin_d_book_groups控制器
function search(){
$searchterm = $this->input->post('search_hotel');
echo json_encode($this->d_book_groups->sw_search($searchterm));
}
d_book_groups_model
function sw_search($searchterm)
{
$query = $this->db->order_by("bg_id", "desc")->like('bg_name', $searchterm, 'after')->get('d_book_groups');
$data = array();
foreach ($query->result() as $row)
{
$data[] = $row->bg_name;
}
return $data;
//return mysql_query("select * from hotel_submits where name LIKE '".$searchterm."'");
}
答案 0 :(得分:2)
$config['compress_output'] = TRUE;
中有application/config/config.php
吗?
如果是,则无法直接从控制器方法输出内容。您必须使用视图。您可以创建一个简单的视图:
<?php echo $response;
并像这样传递json数据:
function search()
{
$searchterm = $this->input->post('search_hotel');
$data['response'] = json_encode($this->d_book_groups->sw_search($searchterm));
$this->load->view('ajax/json_response', $data);
}
答案 1 :(得分:0)
我不知道为什么,但你在这段代码中犯了错误:
$.each(data.name, function (a, b) {
$("#suggestion_tab").append('<li>' + data.b + '</li>');
});
你不能使用&#34; data.b&#34;在$ .each方法中,b是data.name的对象 为了更多的帮助,实际上&#34; b&#34;等于data.name [a] (data.name [a] == b)
因此data.b为false,(data.name [a] == b)&amp;&amp; data.name [a]!= data.b
在$ .each循环中使用console.log(b)来查看你的数组对象(你需要firefox和firebug扩展)
$.each(data.name, function (a, b) {
console.log(b);
});
我想你想把每个名字放在li元素中,如果它是真的,使用这个代码:
$.each(data, function (a, b) {
$("#suggestion_tab").append('<li>' + b.name + '</li>');
});
//这里b.name == data [a] .name