javascript - 构建自动建议文本框时 PHP 和 Javascript 出现问题

标签 javascript php jquery mysql

我正在尝试构建一个简单的自动建议输入栏,用于连接到 MySql 数据库并检索数据。我遇到的问题是,当我输入我知道数据库中存在的对象的名称时,文本栏不会返回任何结果,而是只为我提供一个空的下拉框。

据我所知,该问题与代码的 PHP 部分中使用的 JavaScript 有关。不幸的是,我似乎无法弄清楚为什么它会引起问题。

    <?php
    mysql_connect("host", "user", "passsword") OR DIE ('Unable to connect to database! Please try again later.');
    mysql_select_db('DBName');
    $query = 'SELECT Device_type FROM Device';
    $result = mysql_query($query);
    $counter = 0;
    echo"<script type='text/javascript'>";
    echo"this.nameArray = new Array()";
    if($result) {
        while($row = mysql_fetch_array($result)) {
            echo("this.nameArray"  .$row ['Device_type'] . "';");
            $counter += 1;
        }
    }
    echo("</script>");
    ?>

当我拿出echo"<script type='text/javascript'>";时和echo"this.nameArray = new Array()";然后当页面加载时,它会在页面顶部显示Device_type内容。这显然不是我想要的,但它确实证明数据库连接至少设置正确。由于这段 PHP 引用了一些 javascript,我还将证明它所引用的函数。

    function doSuggestions(text) {
        var input = text;
        //window.alert(text);
        var inputLength = input.toString().length;
        var code = "";
        var counter = 0;
        while(counter < this.nameArray.length) {
            var x = this.nameArray[counter]; // avoids retyping this code a bunch of times
            if(x.substr(0, inputLength).toLowerCase() == input.toLowerCase()) {
                code += "<div id='" + x + "'onmouseover='changeBG(this.id);' onMouseOut='changeBG(this.id);' onclick='doSelection(this.innerHTML)'>" + x + "</div>";
            }
            counter += 1;
        }
        if(code == "") {
            outClick();
        }
        document.getElementById('divSuggestions').innerHTML = code;
        document.getElementById('divSuggestions').style.overflow='auto';
    }

关于为什么当我开始输入时建议框没有提供建议,有什么建议吗?如果我输入 A在文本框中,应该会出现建议框,显示数据库中以 A 开头的所有项目。 .

最佳答案

您的 js 字符串中有一些错误

 `echo"var nameArray = new Array()";`
 `echo("nameArray.push('"  .$row ['Device_type'] . "');");`

这样您就可以将设备类型推送到 nameArray 变量中。

关于javascript - 构建自动建议文本框时 PHP 和 Javascript 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34959294/

相关文章:

php - 哪个适用于 Firebird 的 PHP Web 框架?

php将字符串识别为数组

jquery - 在 jQuery 中执行 $ ("*").live ("mouseover", someFun) 是不好的做法吗?

javascript - 如何在 Leaflet 标记弹出窗口中使用 Angular 指令 ng-click 和 ng-class

javascript - 登录/注销后强制所有页面访问刷新/清除缓存

php - 打破嵌套循环

javascript - 你能用 jquery 获取继承的元素类吗?

javascript - 如何更改此函数以便可以从父元素调用它?

javascript - 文件自动上传时如何禁用 Dropzone.js 中的提交表单

javascript - 如何在文本区域中显示输入(名称+值)?