我有一些问题,我无法想象。我已经编写了使用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);
?>
答案 0 :(得分: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
}
})
});