Php 这个自动完成脚本有什么问题?
这是我的HTML页面Php 这个自动完成脚本有什么问题?,php,jquery,html,jquery-ui,jquery-ui-autocomplete,Php,Jquery,Html,Jquery Ui,Jquery Ui Autocomplete,这是我的HTML页面 <form action="" method="post"> <input type="text" class="auto" name="search" autocomplete="off"> </form> <script> $(document).ready(function($){ $('.auto').autocomplete({ source:'connect.php', min
<form action="" method="post">
<input type="text" class="auto" name="search" autocomplete="off">
</form>
<script>
$(document).ready(function($){
$('.auto').autocomplete({
source:'connect.php',
minLength:1
});
});
</script>
使用chrome工具检查响应,如下所示:
[{"0":"MacBook Pro 13-inch","name":"MacBook Pro 13-inch"},{"0":"MacBook Pro 15-inch","name":"MacBook Pro 15-inch"},{"0":"MacBook Air 13-inch","name":"MacBook Air 13-inch"},{"0":"MacBook Air 11-inch","name":"MacBook Air 11-inch"},{"0":"iMac 21.5-inch","name":"iMac 21.5-inch"},{"0":"iMac 27-inch","name":"iMac 27-inch"},{"0":"Mac Pro Quad-Core","name":"Mac Pro Quad-Core"},{"0":"Mac Pro 6-Core","name":"Mac Pro 6-Core"}]
但是在页面上,我得到“没有搜索结果”
我在谷歌上搜索了很多,我认为这与json的输出方式有关,但我不确定。我不希望使用ajax方法
请不要使用PDO,因为我只能理解基本的程序代码。什么是$(文档)。ready(函数($){
的意思?它应该是$(文档)。ready(函数(){
(注意$
)
另外,尝试将完整的url发送到源
选项,如http://www.yoursite.com/connect.php
编辑
也请阅读以下内容:
如您所见,您可以提供以下阵列:
[ "value1", "value2" ]
或:
要让您了解出了什么问题:使用您的代码:
$(document).ready(function(){
$('.auto').autocomplete({
source:'test1.php',
minLength:1
});
});
这个虚拟PHP文件test1.PHP:
echo json_encode(array('alpha', 'alphabet', 'beta'));
自动完成正在工作。因此:,您必须更改:
while($row = mysqli_fetch_array($result)) {
$return_array[] = $row;
}
echo json_encode($return_array);
进入:
正如rodrigogq已经指出的,jQuery UI autocomplete接受两种形式的数据 字符串数组:
[ "value1", "value2" ]
或具有标签和值属性的对象数组:
[ { label:"value1", value:0}, { label:"value2", value:1}, ]
您有两个选项:修改服务器端脚本以提供正确的响应 或 修改客户端脚本以清理服务器响应 根据您分享的回复,以下是稍后的回复:
$(document).ready(function($){
$('.auto').autocomplete({
source: function(request, response) {
$.get('connect.php', { term: request.term }, function(data) {
var matches = $.map($.parseJSON(data),function(obj){
return obj.name;
});
response(matches);
});
},
minLength:1
});
});
$(document).ready(function($){源代码不是问题所在,因为您可以清楚地看到它已完全发布…@AshleyBrown区别在于
$
作为参数传递给函数()
在您的中。您的数组格式错误。根据需要,您需要提供一个普通数组或标签/值属性。@Alfonso我现在从您的编辑中获得了它;)。好的,更改了它…显然没有什么区别,但谢谢您。好的,现在它清理了很多JSON响应。但是,仍然不适用于我..“没有搜索结果”[“MacBook Pro 13英寸”、“MacBook Pro 15英寸”、“MacBook Air 13英寸”、“MacBook Air 11英寸”、“iMac 21.5英寸”、“iMac 27英寸”、“MacPro四核”、“MacPro 6核”]
这是我得到的不我没有…我应该在哪里添加它?你从PHP得到的是可以的。不需要添加它。我尝试了你的数据,它在我的机器上工作。抱歉,现在我不知道。我建议你首先尝试使用Jquery手册中的示例,使用Javascript编码的数据,只是为了检查它在我的机器上是否工作取决于服务器部分。@M.Page我也不知道,我已经检查过了,它工作得很好!--有了这段代码,我不再得到“没有搜索结果”,但页面上也没有显示任何内容?[“MacBook Pro 13英寸”、“MacBook Pro 15英寸”、“MacBook Air 13英寸”、“MacBook Air 11英寸”、“iMac 21.5英寸”、“iMac 27英寸”Mac Pro四核、“Mac Pro 6核”]
这是我的回答。我这次没有收到任何错误,但页面上仍然没有显示任何内容?@这是根据您在讨论中共享的回答,对象应该有一个name属性…@AshleyBrown如果您在评论中获得了您共享的回答,那么它应该可以正常工作:看到这个。那么还有其他问题。您链接了吗到jQuery,然后是jQuery UI和它的CSS..?您在浏览器控制台中有任何错误吗..?是的,我将它们都链接到了。除此之外,您还有其他联系方式吗?也许使用IM或屏幕共享软件,我们可以更快地解决此问题。。。
[ "value1", "value2" ]
[ { label:"value1", value:0}, { label:"value2", value:1}, ]
$(document).ready(function($){
$('.auto').autocomplete({
source: function(request, response) {
$.get('connect.php', { term: request.term }, function(data) {
var matches = $.map($.parseJSON(data),function(obj){
return obj.name;
});
response(matches);
});
},
minLength:1
});
});