Javascript 使用AJAX从数据库获取结果

Javascript 使用AJAX从数据库获取结果,javascript,php,ajax,search-engine,Javascript,Php,Ajax,Search Engine,在第10行,我插入了getSuggestion(q)用于从数据库中获取结果,但它不起作用 在其他代码保持不变的情况下,为了从数据库检索结果,我应该在那个里放些什么 这是我当前的代码: <html> <script type="text/javascript" src="javascript/hogan-2.0.0.js"></script> <script type="text/javascript" src="javascript/j

在第10行,我插入了
getSuggestion(q)用于从数据库中获取结果,但它不起作用

在其他代码保持不变的情况下,为了从数据库检索结果,我应该在那个里放些什么

这是我当前的代码:

<html>

    <script type="text/javascript" src="javascript/hogan-2.0.0.js"></script>
    <script type="text/javascript" src="javascript/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="javascript/typeahead.js"></script>

    <script type="text/javascript">
        $(document).ready(function() {
            $('.q').typeahead({
                getSuggestion(q);
            });
        });
    </script>

    <script type="text/javascript">

        //document.getElementById("suggestion")

            function getSuggestion(q) {

            var ajax;
            if(window.XMLHttpRequest)//for ie7+, FF, Chrome
                ajax = new XMLHttpRequest();//ajax object
            else
                ajax = new ActiveXObject("Microsoft.XMLHTTP");//for ie6 and previous
            ajax.onreadystatechange = function() {
                if(ajax.status === 200 && ajax.readyState === 4) {
                    //if result are not there then don't display them
                    if(ajax.responseText === "")
                        document.getElementById("suggestion").style.visibility = "hidden";
                    else {
                        document.getElementById("suggestion").style.visibility = "visible";
                        document.getElementById("suggestion").innerHTML = ajax.responseText;
                    }
                }
            };
            ajax.open("GET", "suggestion.php?q=" + q, false);
            ajax.send();
        }
    </script>
</html>

$(文档).ready(函数(){
$('.q')。请提前键入({
建议(q);
});
});
//document.getElementById(“建议”)
功能建议(q){
var-ajax;
if(window.XMLHttpRequest)//对于ie7+,FF,Chrome
ajax=新的XMLHttpRequest();//ajax对象
其他的
ajax=new-ActiveXObject(“Microsoft.XMLHTTP”);//用于ie6和以前的版本
ajax.onreadystatechange=函数(){
if(ajax.status==200&&ajax.readyState==4){
//如果结果不存在,则不显示它们
if(ajax.responseText==“”)
document.getElementById(“建议”).style.visibility=“隐藏”;
否则{
document.getElementById(“建议”).style.visibility=“可见”;
document.getElementById(“建议”).innerHTML=ajax.responseText;
}
}
};
open(“GET”、“suggestion.php?q=“+q,false”);
ajax.send();
}
提前感谢。

更换

<script type="text/javascript">
    $(document).ready(function() {
        $('.q').typeahead({
            getSuggestion(q);
        });
    });
</script>

$(文档).ready(函数(){
$('.q')。请提前键入({
建议(q);
});
});
为此:

<script type="text/javascript">
    $(document).ready(function() {
        $('.q').typeahead({
            name: 'q',
            remote: '/suggestion.php?q=%QUERY',
            minLength: 3, // start searching if word is at least 3 letters long. Reduces database queries count
            limit: 10 // show only first 10 results
        });
    });
</script>

$(文档).ready(函数(){
$('.q')。请提前键入({
名称:‘q’,
远程:'/suggestion.php?q=%QUERY',
minLength:3,//如果单词长度至少为3个字母,则开始搜索。减少数据库查询计数
限制:10//仅显示前10个结果
});
});
这就是你所需要的。剩下的事就由打字机来做

查询的单位为$\u GET['q']

你可以找到我的例子

我的index.php如下所示:

<html>
<head>
    <link rel="stylesheet" href="http://twitter.github.io/typeahead.js/css/main.css">
    <script type="text/javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.9.3/typeahead.min.js"></script>

    <script type="text/javascript">
    $(document).ready(function() {
        $('.q').typeahead({
            name: 'q',
            remote: '/typeahead/suggestion.php?q=%QUERY',
            minLength: 3, // start searching if word is at least 3 letters long. Reduces database queries count
            limit: 10 // show only first 10 results
        });
    });
    </script>
</head>
<body>
    <input type="text" class="q typeahead tt-query" />
</body>

$(文档).ready(函数(){
$('.q')。请提前键入({
名称:‘q’,
远程:'/typeahead/suggestion.php?q=%QUERY',
minLength:3,//如果单词长度至少为3个字母,则开始搜索。减少数据库查询计数
限制:10//仅显示前10个结果
});
});

您不需要css文件或类来输入。只需要“q”类

<input type="text" class="q" />

suggestion.php来源:

<?php
$q = $_GET['q'];
echo json_encode(array($q));
?>

正如您所看到的,无论您当前搜索什么,它的回答都与您键入的结果相同。您必须使用

记住向远程参数添加正确的url。


编辑:我的示例现在从itunes获取数据并搜索音乐视频。示例中提供了已编辑的源代码。

但它不起作用
您可以发布问题的确切原因吗。您会遇到什么错误。?结果不符合javascript
typeahead.js
。根据文档,我认为您没有正确使用typeahead.js。如果是这样,我如何编写代码才能正确使用typeahead.js?它不起作用。我使用上述代码中的第二个脚本获得结果。Typeahead自动从suggestion.php获得结果。检查url是否正确。示例:(最佳影片获奖者)这是可行的,不需要外部代码。检查浏览器网络活动。它应该会显示suggestions.php和error(如果存在的话)。我已经尝试过了,但是结果并不符合typeahead.js所说的。你能帮我吗?我怎么能让建议词出现在用户输入的关键词之后,比如谷歌?[例如]()@user3144149您是否将关键字存储在数据库或某个文件中?如果在数据库中,则使用LIKE和echo结果查询数据库。