所以我并不是很精通使用codeiginiter但是我已经使用了一段时间了。
我正在尝试创建一个SQL查询来搜索数据库中的书籍,但是ajax总是返回空。
我回显了一些虚拟字符串,以确保在控制器和视图之间建立了正确的连接,并确保SQL查询本身有效,但我不明白为什么这仍然会发生。
这是javascript:
$('#search').on("keyup", function() {
search = $(this).val();
console.log("Search Term: " + search);
$.ajax
({
type: "POST",
url: base_url + "vault/quick_search",
data: {search_term:search},
dataType: 'json',
success: function(data)
{
console.log("Result: " + data);
},
error: function(data)
{
alert("?");
}
});
});
这是控制器:
function quick_search()
{
$search = $this->input->post('search_term');
$result = $this->vault_instance->quick_search($search);
echo json_encode($result);
}
这是模型:
function quick_search($search_term)
{
$sql = "SELECT * FROM books WHERE title LIKE '%harr%' OR author LIKE '%harr%'";
$query = $this->db->query($sql);
return $query->result_array;
}
注意:抱歉编辑不好,这是我第一次提问。 另外,在我使用“harr”作为测试的模型中,我理解它不是搜索术语本身,它仍然返回空
答案 0 :(得分:2)
您需要更改此行:
return $query->result_array;
。通过强>:
return $query->result_array();
因为result_array()
是一个将结果返回数组格式的函数。
答案 1 :(得分:0)
您对数据库列使用的排序规则是什么?如果不是utf8_general_ci尝试改变它。
答案 2 :(得分:-1)
不确定这是否有效,但是......尝试将$.ajax
来电中的数据类型更改为jsonp
(而不是json
)。