jquery自动完成远程数据源
Posted
技术标签:
【中文标题】jquery自动完成远程数据源【英文标题】:jquery autocomplete remote data source 【发布时间】:2012-05-18 06:59:29 【问题描述】:我是 jQuery 的新手。我正在尝试 jQuery 自动完成远程数据源,这是我的代码:
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta name="GENERATOR" content="Quanta Plus">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
</head>
<body>
<meta charset="utf-8">
<style>
.ui-autocomplete-loading
background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
</style>
<script>
$(function()
var cache = ,
lastXhr;
$( "#birds" ).autocomplete(
minLength: 2,
source: function( request, response )
var term = request.term;
if ( term in cache )
response( cache[ term ] );
return;
lastXhr = $.getJSON( "search.php", request, function( data, status, xhr )
cache[ term ] = data;
if ( xhr === lastXhr )
response( data );
);
);
);
</script>
<div class="demo">
<div class="ui-widget">
<label for="birds">Birds: </label>
<input id="birds" value="" />
</div>
</div><!-- End demo -->
</body>
</html>
文件:search.php
<?php
require_once("includes/connection.php");
$q = strtolower($_GET["birds"]);
echo $q;
$return = array();
$query = "SELECT title
FROM `project`
WHERE `title` LIKE CONVERT( _utf8 '%$q%'
USING latin1 )";
$resultset=mysql_query($query,$connection);
$json = '[';
$first = true;
while ($row = mysql_fetch_assoc($resultset))
if (!$first)
$json .= ',';
else
$first = false;
$json .= '"value":"'.$row['title'].'"';
$json .= ']';
echo $json;
?>
收到以下错误:
Notice:
Undefined
index: birds in /var/www/html/workbench/sudeepc/project/search.php
on line 4
[
"value":"chandrayaan",
"value":"Project Management System",
"value":"shoping cart",
"value":"hospital management system"
]
在该文本框上搜索时触发错误显示以下错误,并且没有搜索建议。
如何解决这个问题?
【问题讨论】:
显然$_GET["birds"]
不存在。如果将其替换为 $_POST["birds"]
会发生什么?
$q = strtolower($_POST["birds"]);它导致相同的错误
既然他打电话给$.getJSON()
,它应该正在将数据加载到$_GET['birds']
。 PHP 不会因为没有 GET 值而抛出错误——它只会有一个空值。
当我输入文本框时,get请求转到search.php get http:// ...?term = sho所以我更改了我的搜索.php 到 $q = strtolower($_GET["term"]);现在没有错误火虫显示Sho [“值”:“购物车”]在响应中,没有为文本框出现自动完成。 span>
【参考方案1】:
根据 cmets,第一个错误似乎是由查找错误的 $_GET 变量引起的。支持您使用 Firebug 发现该问题并进行适当的纠正。
目前没有填写值的原因是因为在JSON前面回显了额外的字符串。删除echo $q;
行,它应该可以工作。
【讨论】:
以上是关于jquery自动完成远程数据源的主要内容,如果未能解决你的问题,请参考以下文章