我有一种产品形式,其中产品名称fild具有自动完成功能,但它不会加载超过250条记录。如果我将限制设置为300或500,则它不起作用。以下是我的代码,如果我的脚本中有任何问题,任何人都可以告诉我。
jQuery.noConflict();
jQuery(function() {
var availableTags = [
<?php
$query_product = "SELECT DISTINCT prod_name FROM tbl_product LIMIT 250";
$result_product = mysql_query($query_product);
while($row_product = mysql_fetch_array($result_product))
{
$prod_name = $row_product['prod_name'];
?>
"<?php echo $prod_name; ?>",
<?php
}
?>
];
jQuery('input[name="item[]"]').autocomplete({
source: availableTags
});
});
<input type="text" placeholder="Item" id="item" name="item[]">
答案 0 :(得分:1)
"SELECT DISTINCT prod_name FROM tbl_product LIMIT 250";
尝试删除LIMIT 250部件?
答案 1 :(得分:1)
很可能你的$row_product['prod_name']
中有一个单引号或反斜杠,因此在将数据库数据提供给Javascript之前需要对其进行清理。
我认为您的代码需要如下所示:
var availableTags = [
<?php
$query_product = "SELECT DISTINCT prod_name FROM tbl_product LIMIT 250";
$result_product = mysql_query($query_product);
while($row_product = mysql_fetch_array($result_product))
{
echo "'".str_replace("'", "\\'", str_replace('\\', '\\\\', $row_product['prod_name']))."',";
}
?>
];
答案 2 :(得分:0)
这只是猜测,因为没有足够的信息可以继续,但这看起来非常错误:
var availableTags = [
<?php
...
?>
"<?php echo $prod_name; ?>",
<?php
...
?>
];
看起来你正在尝试构建json / a javascript数组,但你输出的内容可能不是你需要的,你数据中的任何特殊字符都会破坏json。所以我的猜测是,在产品250周围有一个产品会破坏你的结果。
你应该做的是构建一个数组并使用json_encode()
将其直接发送到javascript:
var availableTags = <?php echo json_encode($your_array); ?>;