Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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 jQuery UI自动完成无法处理源中的外部文件_Php_Jquery_Autocomplete - Fatal编程技术网

Php jQuery UI自动完成无法处理源中的外部文件

Php jQuery UI自动完成无法处理源中的外部文件,php,jquery,autocomplete,Php,Jquery,Autocomplete,就这样。。。我的jQuery代码如下: jQuery: <script type="text/javascript"> $(document).ready(function() { $('#val').autocomplete({ source: "search.php", }); }); </script> 但事情是这样的。。。当我打开我的search.php时,我想到了json中的所有结果。。。然后,如果我尝试自动完成,他会加载所有结

就这样。。。我的jQuery代码如下:

jQuery:

<script type="text/javascript">
$(document).ready(function() {
    $('#val').autocomplete({
        source: "search.php",
    });
});
</script>
但事情是这样的。。。当我打开我的search.php时,我想到了json中的所有结果。。。然后,如果我尝试自动完成,他会加载所有结果。。。。。。。例如

在search.php中,我收到:

[诺基亚,诺基亚Lumia]

好的。。。在autocomplete中,当我键入LUMIA时,小部件也会加载Nokia。 布乌特。。。。。如果我复制search.php中得到的结果,并在jquery脚本中粘贴一个变量,那么自动完成就可以了

有人知道为什么我的外部结果源不能像我将结果与jQuery代码一起直接放在一个变量上那样工作吗

提前感谢,并为我糟糕的英语感到抱歉:-

编辑:

所以我放了更多的图片来展示发生了什么。。。这样它就不起作用了,就像源代码不能接受$'val'。val

解决

我自己解决了这个问题

<script type="text/javascript">
$(document).ready(function(){
    $('#val').keyup(function(){
        var x = "search.php?ac=" + $('#val').val();
        $('#val').autocomplete({
            source: x,
            minLenght:5,
        });
    });
});
</script>

感谢所有回复:-

返回的格式应如下所示:

[
      {
            "label": "Nokia",
            "value": "1"
      },
      {
            "label": "Lumia",
            "value": "2"
      }
]
当然,也有一些变化,可能是新版本的自动完成有点不同的风格。但始终应该是一对标签和价值

您也可以向请求中添加选项dataType:'json'

我认为返回这种JSON也会起作用:

{1:'Nokia',2:'Lumia'}

当您使用javascript变量时,autocompleteAC正常工作。。因为AC本身会从变量数组中找到匹配结果。另一方面,如果您调用search.php,AC将把它返回的任何内容作为匹配结果,并且不会尝试进一步匹配

实际上,我认为您在PHP脚本中的查询是错误的,您需要对此进行调试。您正在键入LUMIA,脚本将返回['Nokia']等。这意味着它正在运行此查询

从opcionais中选择*,Opcional如“Nokia%”

而它应该运行

从opcionais中选择*,其中Opcional如“LUMIA%”

好了

编辑:


看起来你根本没有通过ajax发送关键词LUMIA。您需要做的是以这种方式更改js:

$('#val').autocomplete({
    source: "search.php?keyword="+$('#val').val(),
});
在php中:

$sql = mysql_query("SELECT * FROM opcionais WHERE Opcional LIKE 'Nokia ".$_GET['keyword']."%'");
或者为了更好的结果:

$sql = mysql_query("SELECT * FROM opcionais WHERE Opcional LIKE '%".$_GET['keyword']."%'");

此外,我建议在查询中使用预先准备好的语句,这些mysql函数是。

实际上,查询将返回数据库中的每个诺基亚手机型号。。。我有10个以LUMIA为名的模特。。。因此,当我使用诺基亚%进行查询并键入LUMIA时,应返回所有存在的诺基亚LUMIA XX。。。明白了吗?看来你没有通过ajax发送关键词LUMIA。检查我的编辑。我已经用你的提示更新了一些屏幕。。。但是仍然不起作用:在jQuery代码中观察,如果我放置$function{$'val'.autocomplete{source:search.php?ac=lumia,minLength:5,};};指定GET语句后,插件运行良好…:查看屏幕截图,我认为您应该在HTML下面添加脚本。同时也在考虑您的解决方案。您不应该在keyup事件中调用autocomplete。这是完全错误的。好吧,我尝试使用你的提示将脚本放在我的html下面,但也没有成功。。。在键盘上使用自动完成对我来说很好。。。所以我认为这是一个解决办法。但无论如何还是要感谢:-我在Search.php中得到了准确的返回:{1:'Nokia',2:'Lumia'}而那时我甚至无法获得AC作品,我从jqueryUI下载了最新版本的AutoComplete
$sql = mysql_query("SELECT * FROM opcionais WHERE Opcional LIKE 'Nokia ".$_GET['keyword']."%'");
$sql = mysql_query("SELECT * FROM opcionais WHERE Opcional LIKE '%".$_GET['keyword']."%'");