我正试图使自动完成从我的数据库(这是在SQL Server上)的元素的研究。
这是我的PHP请求:public function getNomProduitsAutocomplete() {
$q = ' SELECT NomProduit
FROM Produit
WHERE NomProduit LIKE 'a%' OR NomProduit LIKE 'b%'
ORDER BY NomProduit';
$qResults = $this->fetchAll($q);
$numItems = count($qResults);
$i = 0;
//var_dump($numItems);
$result = '[ ';
foreach($qResults as $res){
if(++$i === $numItems) {
$result .= '"' .$res['NomProduit'] . '"' ;
}
else {
$result .= '"' .$res['NomProduit'] . '", ';
}
}
$result .= ' ]';
return $result;
}
和js中的自动补全:
$(function () {
<?php
$p = new Produit();
$produits = $p->getNomProduitsAutocomplete();
//var_dump($produits);
?>
var availableTags2 = <?php echo ($produits); ?>;
$( "#tags" ).autocomplete({
source: availableTags2
});
});
最后是自动补全的输入:
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>
所有这些都工作得很好,但只有当我在数组中拥有少于1000个元素时,似乎。
它实际上适用于700个元素(如您所见,"WHERE nomproducit LIKE 'a%'或nomproducit LIKE 'b%'"),如果可能的话,我想获得所有元素(+/- 4800个元素),而不仅仅是700……如果你有什么想法…:)谢谢。
为什么在 getnomproducitsautocomplete 函数中不使用josn_encode
函数?
你是在PHP中手动创建javascript数组,而不是收集所有的$res['NomProduit']
在一个数组说$js_array
,然后使用return json_encode($js_array)