在jQuery自动完成中动态发送数据和接收数据

时间:2011-03-18 11:48:20

标签: jquery jquery-autocomplete

我正在使用jQuery的自动完成插件来填充文本框元素。每当在文本框中输入单词时,我希望数据来自API调用。没有预定义的数组要传递给自动完成功能,它是从PHP脚本动态生成的。 我正在使用的代码,

$(document).ready(function(){
     $("#textbox").autocomplete("myurl.php");
});

PHP脚本将一个密钥(即$__GET['key'])作为响应值,并根据该查询,数据库a给出一个JSON输出。

但这不起作用,如何将键值发送到PHP脚本并获取JSON返回值并填充我的自动完成元素?

2 个答案:

答案 0 :(得分:0)

根据此页面:http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions,您的PHP脚本需要将$_GET['p']作为输入文本,$_GET['limit']作为最大条目数。如果我理解正确,你的脚本正在寻找'key'参数,当它应该寻找'p'参数时。

它还说响应应该是新行上的每个单词,所以不是传递为JSON,而是需要echo "$word\n";来保存数据库中的每个单词。

或者,如果你已经开始使用JSON,你可以使用类似下面的JQuery加载数据:

<script type="text/javascript">
  function getData( keyTxt ) {
    // Send GET request through AJAX
    $.get( 'myurl.php',
           // Set up your query params
           {key:keyTxt},
           // Callback for when the datais returned
           function( data ) {
            // Assuming your PHP puts returns JSON containing the "txt" array
            // Convert the array of words into a space-delimited string
            completeData = data.txt.join( ' ' );
            // Run autocomplete.
            $('textbox#textboxID').autocomplete( completeData )
           },
           // Tell JQuery you're returning json
           'json');
</script>

您的PHP将接受'key'参数,查询您的数据库,然后在名为'txt'的单词数组上使用json_encode( )

答案 1 :(得分:0)

AFAIK您在PHP脚本中收到的参数有“q”键(即$search = $_GET['q'];

有关详细信息,请参阅http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions