Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个自动完成脚本有什么问题?_Php_Jquery_Html_Jquery Ui_Jquery Ui Autocomplete - Fatal编程技术网

Php 这个自动完成脚本有什么问题?

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

这是我的HTML页面

<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
  });
});