jQuery自动完成功能不会加载超过250条MySQL记录?

时间:2016-05-24 19:50:24

标签: php jquery mysql autocomplete fetch

我有一种产品形式,其中产品名称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[]">

3 个答案:

答案 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); ?>;