0

我有一些我想不通的问题。我已经编写了使用 Type-ahead 获取自动完成搜索系统的函数。

此功能在 localhost 机器上完美运行,但是当它上传到服务器时,该功能被破坏。

这是我的提前输入语法:

<script>
         $(document).ready(function(){
             $('#q').typeahead({
                 source: function(query, process){
                     $.ajax({
                         url:'autosearch.php',
                         type:'POST',
                         data:'query=' + query,
                         dataType: 'JSON',
                         async: true,
                         success:function(data){
                             process(data);
                         }
                     });
                 }
             })
         });   
        </script>

它从文本输入中获取价值(下面的html)

<form method="GET" action="search.php" class="form-inline pull-right">
                        <input name="q" id="q" class="span5" type="text"  placeholder="search" data-provide="typeahead" autocomplete="off">
                        <button type="submit" class="btn btn-primary"> <i class="icon-search icon-white"></i></button>
                    </form>

这个功能有什么问题?

谢谢

更新

从firebug获得结果后,它显示php文件发生错误

注意:未定义的索引:第 5 行C:\xampp\htdocs\kbase\panel\autosearch.php中的 q

php代码是这样的:

<?php 
require_once "configuration.php";
$q = mysql_real_escape_string(strtolower($_GET['q']));

$sql = "SELECT DISTINCT title as title FROM ** WHERE title LIKE '%" . $q ."%'";
$rsd = mysql_query($sql);
$cname = array();

while ($rs = mysql_fetch_assoc($rsd)) 
{
    $cname[] = $rs['title'];
}
 echo json_encode($cname);
?>
4

1 回答 1

0

autosearch.php发送一个POST请求而不是一个请求GET。它还将变量名称作为query而不是发送q

注意,您可以简化 ajax 查询:

$(document).ready(function(){
    $('#q').typeahead({
        source: function(query, process) {
            $.ajax({
                url:'autosearch.php',
                type:'POST', // <- defaults to GET (desired by your PHP)
                data:'query=' + query, // <- change to {'q': query} for your PHP
                dataType: 'JSON', // <- 'json' LOWERCASE
                async: true, // <- defaults to true anyway
                success: process // <- same function signature
        }
    })
});   
于 2013-06-19T04:53:47.927 回答