3

我想设置自动填充字段。JQuery自动完成服务器端匹配

我已阅读JQuery UI文档,但所有示例均假定源是JQuery将从中选择匹配项的静态项目列表(我的意思是static =列表已完成并且不依赖于什么用户输入)。

这里是从“远程数据源”示例代码:

$("#birds").autocomplete({ 
    source: "search.php", 
    ... 

我想jQuery来调用search.php?query=mytext(此URL返回匹配项的列表),因为我需要使用查找数据库中的建议PHP。

有没有办法做到这一点?也许我不明白文档?

+0

伟大的话题。我正在完成自动完成,我想弄清楚服务器端的PHP文件,将通过数据库搜索名称和类别。你有什么发现吗? Thans – aleXela 2013-04-15 14:41:06

+0

@alexela看一看 – 2013-04-15 16:14:11

+0

这个问题的答案(没有帮助,或者我没有找到它 – aleXela 2013-04-16 20:48:27

回答

7

上自动完成:

只需指定源选项,即可自定义自动完成功能以使用各种数据源。数据源可以是:

  • 与本地数据
  • 字符串,指定URL
  • 回调

,并进一步向下

当数组使用字符串时,Autocomplete插件希望该字符串指向将返回JSON数据的URL资源。它可以位于同一台主机上或不同的主机上(必须提供JSONP)。请求参数“term”被添加到该URL。数据本身可以采用与上述本地数据相同的格式。

你试过了你给的代码吗?它应该调用url search.php?term = mytext

+1

谢谢你,你完全理解我在找什么,我不幸在文档中错过了,但是我发誓我读了它很多次,因为我确信有一种方法可以做到这一点 – 2012-01-16 14:06:11

+0

(我尝试了代码,但没有什么明显的代码知道你有一个额外的GET参数与它的文本) – 2012-01-16 14:07:26

1

那么search.php可以返回任何想要的。

对于静态的内容,你可能想要做这样的事情:

$myList = array('pizza'=>array('mushrooms','pepperoni','olives')); 
echo json_encode($myList); 

也就是说并非遥不可及什么分贝电话会给你。

php中的许多框架在从数据库中查找后返回一个关联数组。我相信(就像我记得的那样),即使是内置于php的标准mysql工具也能做同样的事情(或类似的事情)。

json_encode/json_decode可以帮助将任何你想在php中转换为json。然后,您只需将其回显出来,自动完成功能就会相应地进行响应。

你正在做的正确。您可能需要稍微改变一下格式。你目前从search.php输出什么?

哦,我差点忘了,你可能需要指定你的输出JSONP(虽然有时候你可以不这样做脱身):从jQuery UI文档

header('content-type: application/json; charset=utf-8'); 
4

这里是我写的一段客户端代码的一段代码(改为保护无辜!),它完全按照您的要求进行......

function ConfigureAutoComplete() { 

     $('#myautocomplete').autocomplete({ 
      type: "POST", 
      minLength: 3, 
      source : function (request, response) 
      {       
       var source_url = "../handlers/MyLookup.ashx?someparameter=" + $("#someparameter").val(); 

       $.ajax({ 
        url: source_url, 
        dataType: "json", 
        data: request, 
        success: function (data) { response(data); }, 
        error : function (a,b,c) { HandleLookUpError(a); } 
        }); 
      },     
      select: function (event, ui) { $('#result').val(ui.item.id); }    
     }); 
    } 

如前所述,您的search.php页面可以返回任何您想要的内容。因此,您可以缩小服务器上的列表并将其返回给客户端,然后该客户端将允许用户从该列表中选择。