使用jQuery-ui使用php和javascript自动完成文本框

I am trying to autocomplete a text box in my search.php code using autocomplete.php

I know that my php code works perfectly and echo's back exactly what is needed for the autocomplete function in jQuery.

Here is the html for the text box.

<input type="text" name='search' id="search" class="input-block-level" autocomplete="off" placeholder="search...">

Here is my script for the autocomplete function

<script>
  jQuery(document).ready(function($){
    $('#search').autocomplete({source:'autocomplete.php', minLength:2});
  });
</script>

Here is the php file

<?php


 if ( !isset($_GET['term']) )
exit;


$conn = odbc_connect('Abilis', 'infosysreader', 'Wilsons12'); 

$query = "SELECT TOP 10 [Del_ad1] FROM [Abilis].[dbo].[Customers] WHERE Del_ad1 LIKE    '%".$_GET['term']."%'";

$rs = odbc_exec($conn, $query);



$data = array();

for($i = 0; $i<odbc_num_rows($rs);$i++){
$row = odbc_fetch_array($rs, $i);

$data[] = array(
            'label' => $row['Del_ad1'],
            'value' => $row['Del_ad1']
);
}

// jQuery wants JSON data
echo json_encode($data);
flush();

Edit:

I found my error at the end of my html file. It was just a mistake on my part, the method I use above works fine.

drzk21632
drzk21632 请参阅更新的答案从输入元素中删除额外参数
7 年多之前 回复
dongzi0850
dongzi0850 没有看错的URL,我尝试了ajax调用,没有运气
7 年多之前 回复
douyin2883
douyin2883 如果有浏览器自动完成,则意味着您的PHP脚本永远不会被执行。你有没有尝试过ajax电话?你的网址是否正确?检查您的源URL
7 年多之前 回复
douping4436
douping4436 自动完成功能是浏览器自动完成功能,可与之前的条目一起使用。它与jQuery自动完成没有任何关系。它打开或关闭时不起作用。
7 年多之前 回复
doujia9833
doujia9833 愚蠢的问题....但不应该自动完成“开”?也许我不明白
7 年多之前 回复
doushaizhen1244
doushaizhen1244 什么问题?
7 年多之前 回复

1个回答

Not sure what your problem is but since your PHP correctly returns json encoded string then problem is with autocomplete call. Try this and let me know if it makes any difference:

$('#search').autocomplete({
   minLength:2,
   source: function(request, response) {
       $.ajax({
         url: 'autocomplete.php', 
         dataType: 'json',
         data: { term : request.term },
         success: function(result) {
              response(result);
         }
       });
   }
});

Also try changing autocomplete="off" to autocomplete="on"

Remove the following from input element:

class="input-block-level" autocomplete="off" placeholder="search..."

and try with <input type="text" name='search' id="search" />

dosf40815
dosf40815 因为在minLength之后它缺少逗号,请立即尝试
7 年多之前 回复
dsh102123
dsh102123 它在使用我的旧代码时会发出警报,但不会使用您的ajax代码。
7 年多之前 回复
doulangyu9636
doulangyu9636 然后尝试替换jQuery(document).ready(function($){with $(function(){this并且这个脚本位于与html输入元素相同的文件中吗?如果它在输入元素之外,你是否包括js文件?试试 警报('a')在自动完成之前你收到警报信息吗?
7 年多之前 回复
douang4294
douang4294 仍然没有运气。
7 年多之前 回复
duanbodai5166
duanbodai5166 看到更新的答案
7 年多之前 回复
donglu3243
donglu3243 所有的URL看起来都很完美。 那里似乎什么都没错。
7 年多之前 回复
dongmibeng5885
dongmibeng5885 检查源URL
7 年多之前 回复
dongqi19827
dongqi19827 完全没有错误消息。 日志中也没有。 不确定发生了什么。
7 年多之前 回复
dqm7854
dqm7854 问题是什么错误消息?
7 年多之前 回复
doucan4815
doucan4815 我试过那个没有运气的脚本,也尝试打开和关闭自动完成功能。 没有运气不幸。
7 年多之前 回复
立即提问
相关内容推荐