JS - 构造数组 - 在元素列表后面的SyntaxError:missing]

时间:2015-06-02 13:06:35

标签: javascript php jquery arrays

我正在尝试对我的数据库中的元素进行自动完成(在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>

所有这一切都运行良好,但只有当我拥有时,数组中的元素少于1 000个。

它实际上可以使用700个元素(“你可以看到NOMProduit LIKE \'a%\'或NomProduit LIKE \'b%\'”,并且我希望得到所有元素(+/- 4 800)元素)如果可能,不仅700 ... 如果你有任何想法...... :) 感谢。

1 个答案:

答案 0 :(得分:0)

为什么不在 getNomProduitsAutocomplete 函数中使用josn_encode函数?

您是在PHP中手动创建javascript数组,而是收集数组中$res['NomProduit']所有$js_array,然后使用return json_encode($js_array)