Php JQuery自动完成结果

Php JQuery自动完成结果,php,jquery,mysql,autocomplete,Php,Jquery,Mysql,Autocomplete,您好,我使用autocomplete允许用户搜索存储在MySQL数据库中的场地。当用户开始键入并使用结果处理程序打印所选场馆时,autocomplete插件当前正在列出场馆 我还想打印场地的地址、电话号码和网站,但我不知道如何打印 我有一个运行php脚本的autocomplete插件,可以从数据库中打印出场馆名称。我不知道如何在不显示自动完成输入字段的情况下检索数据库中的其他字段 这就是我到目前为止所做的: JQuery PHP 上面的php只选择俱乐部名称,因为当我尝试选择更多字段时,它们会显

您好,我使用autocomplete允许用户搜索存储在MySQL数据库中的场地。当用户开始键入并使用结果处理程序打印所选场馆时,autocomplete插件当前正在列出场馆

我还想打印场地的地址、电话号码和网站,但我不知道如何打印

我有一个运行php脚本的autocomplete插件,可以从数据库中打印出场馆名称。我不知道如何在不显示自动完成输入字段的情况下检索数据库中的其他字段

这就是我到目前为止所做的:

JQuery

PHP

上面的php只选择俱乐部名称,因为当我尝试选择更多字段时,它们会显示在JQuery端的搜索结果中


我是JQuery新手,所以我有点迷路了。。。有什么建议吗?

有几种方法,但这是最简单的:

您希望像这样从服务器返回数据。第一列应包含最后要检索的值:

title|address|phone|web
title|address|phone|web
title|address|phone|web 
然后要在自动完成函数中使用回调:

$(document).ready(function(){
    $("#example").autocomplete("search.php", {
        width: 260, 
        selectFirst: false,
        formatItem: function(row){
          var ret = '<span class="title">' + row[0] + '</span><br />';
          ret += '<span class="address">' + row[1] + '</span> ';
          ret += '<span class="phone">' + row[2] + '</span> ';
          ret += '<span class="web">' + row[3] + '</span> ';
          return ret;
        },
        formatValue: function(row){
          return row[0]; // We only want the first value to be searched
        }
      }).result(function(event, data, formatted) {
        $("#result").html( !data ? "No match!" : "Selected: " + formatted);
      });
});

另外,您没有逃避用户的输入,因此SQL注入有一个令人讨厌的漏洞

谢谢,我将试一试。至于不逃逸,我仍在测试脚本,所以一旦它工作,我将添加安全功能。再次感谢@太好了!如果它对你有效,一定要回来,并将答案标记为已接受,以便将来的搜索者知道它是正确的。。。另外,我们都得到了积分:欢迎来到Stack Overflow@Doug Neiner,你提供的代码非常有效,谢谢!
title|address|phone|web
title|address|phone|web
title|address|phone|web 
$(document).ready(function(){
    $("#example").autocomplete("search.php", {
        width: 260, 
        selectFirst: false,
        formatItem: function(row){
          var ret = '<span class="title">' + row[0] + '</span><br />';
          ret += '<span class="address">' + row[1] + '</span> ';
          ret += '<span class="phone">' + row[2] + '</span> ';
          ret += '<span class="web">' + row[3] + '</span> ';
          return ret;
        },
        formatValue: function(row){
          return row[0]; // We only want the first value to be searched
        }
      }).result(function(event, data, formatted) {
        $("#result").html( !data ? "No match!" : "Selected: " + formatted);
      });
});