我正在使用jquery autocomplete插件使用PHP,MySql和 AJAX 从数据库中选择数据。该插件除了获取product_id之外运行良好。当该插件获取autocomplete列表时,我还想附加一个隐藏的product_id到产品中以区分产品,例如在多个产品具有相同product_name的情况下。
下面是仅与product_name一起使用的代码。
function select_name(){
$("[id^='product_name']").focus(function() {
var id = $(this).attr('id');
id = id.replace("product_name",'');
$("[id^='product_name']").autocomplete({
source: 'store_supply/fetch_autocomplete_name.php',
select: function (event, ui) {
var pro_nm = ui.item.value;
$.ajax({
url:"store_supply_manage/fetch_product_code.php",
method:"POST",
data:{pro_nm:pro_nm},
//here I want to post a product_id when selecting the product_name
dataType:"json",
success:function(data){
$('#mu_emri_'+id).val(data.mu_name);
$('#product_code_'+id).val(data.barCode);
$('#vat_vlera_'+id).val(data.vat_value_4);
$('#product_id'+id).val(data.product_id);
calculateTotal();
}
});
}
});
});
}
//fetch_autocomplete.php
if (isset($_GET['term'])) {
$term = $_GET['term'];
$query = $db->prepare("SELECT product_name FROM products
WHERE product_name LIKE '%$term%' LIMIT 10");
$query->execute();
$nr = $query->rowCount();
if ($nr > 0) {
while ($row = $query->fetch()) {
$result[] = $row['product_name'];
}
}
else {
$result = array();
}
//return json result
echo json_encode($result);
}
1条答案
按热度按时间gmxoilav1#
在你的代码中,你准备了你的SQL语句,但是插入了$term变量,而不是参数化你的查询。在下面的例子中,我参数化了你的查询。
如文档中所示,数据可以是:
因此,您只需将fetch_autocomplete. php更改为如下内容:
将
id
更改为产品id列的名称,现在,在select
处理程序中,ui.item.value
将是产品id而不是其名称。