获取jQuery自动完成功能以使用PHP源代码

时间:2012-04-29 09:50:57

标签: php javascript jquery mysql jquery-autocomplete

我有一个带有以下代码的jQuery自动完成字段:

 var tags = ["a", "ab", "abc", "abcd", "adbce", "abcdef", "abcdefg", "abcdefgh", "abcdefghi", "abcdefghij", "abcdefghijk", "abcdefghijkl", "abcdefghijklm", "abcdefghijklmn", "abcdefghijklmno", "abcdefghijklmnop", "abcdefghijklmnopq", "abcdefghijklmnopqr", "abcdefghijklmnopqrs", "abcdefghijklmnopqrst", ];
      $("input#name").autocomplete({
        position: {
          offset: "0 -10px",
        },
        source: tags
      });

使用'tags'数组作为样本输入数据,它正常工作。

现在我需要一组MySQL查询结果而不是该示例数组。我所做的是将函数调用更改为:

$("input#name").autocomplete({
        position: {
          offset: "0 -10px",
        },
        source: "http://absolutepathtofile/autosuggest.php"
      });

我使用绝对路径确保我没有在那里犯一些愚蠢的错误,因为我无法让文件返回自动完成。我去过jQuery文档并找到了一些使用PHP / MySQL返回自动完成结果的例子,但我无法让它工作。

这是我在autosuggest.php中试过的:

$term = $_REQUEST['term'];
$query = "SELECT * FROM merchants WHERE business_name LIKE '%$term%'";
$result = mysql_query($query);

$k=0;
while($row=mysql_fetch_array($result)){

    $aUsers[$k]=$row['business_name'];
    $k++;

}

echo json_encode($aUsers);

我尽可能简单,但没有用。

然后我测试了JSON是否被发送,所以我这样做了:

$array[0]="test";
$array[1]="test1";

echo json_encode($array);

它不起作用。我在任何地方都找不到这个问题,我做错了什么? PHP版本是5.3.10,它有json_encode(之前使用过)。

2 个答案:

答案 0 :(得分:1)

$.ajax({
     url:"http://absolutepathtofile/autosuggest.php",
     type:"post",
     success:function(html){
         $("#user_phone").autocomplete(
            {position: {offset: "0 -10px"},
            source: html
         });
     }   
});
  • 为我工作并经过测试

答案 1 :(得分:0)

我编写了这个自定义脚本,当我们没有json_encode可用时,在我们的代码中使用dropdown,希望它可以帮助你解决问题。

'get_xref_values()'函数只是根据提供的参数构建一个数组,GET - 'term' - 是自动填充文本框中的文本,它由控件自动添加。

“点击”代码只会在用户点击时以及键入时自动生成自动填充下拉列表。

这是jquery:

$("#libraryEventAspectRatio" ).autocomplete({
    source: "/dropDowns/autoXref.php?category=" + "aspectratio",
    matchContains: true,
    minLength: 0
}).click(function(){
    $("#libraryEventAspectRatio" ).autocomplete('search', $(this).val());
});

这是php:

//this page creates simple data for a drop down box to use (jquery's UI autocomplete)

$category       = get_input_get("category");
$description    = get_input_get("term");
$select_field   = get_input_get("selectField");
$select_value   = get_input_get("selectValue");

$order_by       = "description";

$xref_data      = get_xref_values($category, $order_by, $description, $select_field, $select_value);

$str = "[";

foreach ($xref_data as $row):
    $str .= '"' . $row['description'] . '",';
endforeach;

//chop off the last comma
if (count($xref_data)) {
    $str = substr($str,0,-1);
}

$str .= "]";

echo $str;