jquery使用codeigniter自动完成
我将jQuery自动完成与codeigniter框架一起使用 目前,这是100%有效的 我的模型是:jquery使用codeigniter自动完成,jquery,codeigniter,autocomplete,Jquery,Codeigniter,Autocomplete,我将jQuery自动完成与codeigniter框架一起使用 目前,这是100%有效的 我的模型是: function get_sku_code($q){ $this->db->select('ProductCode'); $this->db->like('ProductCode', $q); $query = $this->db->get('ProductList'); if($query->num_rows >
function get_sku_code($q){
$this->db->select('ProductCode');
$this->db->like('ProductCode', $q);
$query = $this->db->get('ProductList');
if($query->num_rows > 0){
foreach ($query->result_array() as $row){
$row_set[] = htmlentities(stripslashes($row['ProductCode'])); //build an array
}
$this->output->set_content_type('application/json')->set_output(json_encode($row_set));
}
}
我的看法是:
$("#product").autocomplete(
{
source: "get_sku_codes",
messages:
{
noResults: '',
results: function() {}
},
select: function( event, ui )
{
var selectedObj = ui.item;
$.post('get_sku_prices', {data:selectedObj.value},function(result) {
$("#product").parent().parent().find('input[id^="price"]').val(result[0]);
$("#product").parent().parent().find('input[id^="adjustedprice"]').val(result[0]);
});
}
});
如前所述,这100%有效。我遇到的一个问题是,如果没有数据库匹配,自动完成列表就是空的。当模型没有返回值时,是否有方法返回“数据库中没有匹配项”?我应该使用jquery还是使用codeigniter mysql请求来实现这一点
谢谢你一如既往
控制器-获取sku代码
function get_sku_codes(){
$this->load->model('Sales_model');
if (isset($_GET['term'])){
$q = strtolower($_GET['term']);
$this->Sales_model->get_sku_code($q);
}
}
首先,根据模式,您不应在模型中重复任何内容。所有这些逻辑必须位于视图将从中获取数据的控制器上 将您的模型更改为:
function get_sku_code($q){
$this->db->select('ProductCode');
$this->db->like('ProductCode', $q);
$query = $this->db->get('ProductList');
$row_set = array();
if($query->num_rows > 0){
foreach ($query->result_array() as $row){
$row_set[] = htmlentities(stripslashes($row['ProductCode'])); //build an array
}
return $row_set;
}
以及您的控制器:
function get_sku_codes(){
$this->load->model('Sales_model');
if (isset($_GET['term'])){
$q = strtolower($_GET['term']);
$output = $this->Sales_model->get_sku_code($q);
$this->output->set_content_type('application/json')->set_output(json_encode($output));
}
}
然后在视图中,您可以在
下方或旁边的某个位置创建
元素,以在返回结果为空时显示“无匹配项”消息
$("#product").autocomplete(
{
source: "get_sku_codes",
response: function(event, ui) {
if (ui.content.length === 0) {
$("#noMatches").html("No matches");
} else {
$("#noMatches").empty();
}
},
select: function( event, ui )
{
var selectedObj = ui.item;
$.post('get_sku_prices', {data:selectedObj.value},function(result) {
$("#product").parent().parent().find('input[id^="price"]').val(result[0]);
$("#product").parent().parent().find('input[id^="adjustedprice"]').val(result[0]);
});
}
});
谢谢@Sport Billy,你是对的,但当我填充此内容时,没有显示任何内容,只是“没有”。你知道为什么吗?谢谢。嗨,体育比利,谢谢你的努力,谢谢。我按照你的建议试过了,但还是一无所获:-(开发者工具XHR根本没有显示HTML响应,所以不确定它是否正确传递。还有其他建议吗?再次感谢。嗨,比利,在我的模型中,这已经是一个问题了。谢谢。然后你有一个输入错误。在你的模型中,你有
get\u sku\u code
,而不是JS中的get\u sku\u code
。你还期待着一个变量能够$q
从数据库中获取结果,但使用jQuery.autocomplete()
时您没有发送任何数据。您说它正在工作,并且正在查看结果(如果有),但我无法理解它是如何工作的。对不起,比利,您是正确的。get\u sku代码是我的模型,我添加了get\u sku代码(控制器)回答这个问题。再次感谢。