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

发布于 2024-10-22 12:08:29 字数 349 浏览 6 评论 0原文

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

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

PHP 脚本采用一个键(即 $__GET['key'])作为响应值,并在此基础上查询数据库并给出 JSON 输出。

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

I am using jQuery's autocomplete plugin to fill the textbox element. I want the data to be coming from an API call whenever a word is entered in the textbox. There is no predefined array to be passed to the autocomplete function, its dynamically generated from a PHP script.
The code that I am using,

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

the PHP script takes a key(i.e $__GET['key']) as response value, and on the basis of that queries the database an gives a JSON out put.

But this is not working, how can I send the key value to the PHP script and get the JSON return value and populate my autocomplete element?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谜兔 2024-10-29 12:08:29

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

它还表示响应应该是新行上的每个单词,因此您需要为数据库中的每个单词 echo "$word\n"; ,而不是作为 JSON 传递。

或者,如果您决定使用 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”参数,查询数据库,然后使用 json_encode( )在名为“txt”的单词数组上。

According to this page: http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions, your PHP script needs to take $_GET['p'] as the input text and $_GET['limit'] as the max number of entries. If I understand correctly, your script is looking for the 'key' parameter, when it should be looking for the 'p' parameter.

It also says that the response should be each word on a new line, so rather than passing as JSON, you would need to echo "$word\n"; for each word from your database.

Alternatively, if you're set on using JSON, you could load the data using something like the following 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>

Your PHP would take in the 'key' parameter, query your database and then use json_encode( ) on the array of words called 'txt'.

谁的新欢旧爱 2024-10-29 12:08:29

据我所知,您在 PHP 脚本中收到的参数具有键“q”(即 $search = $_GET['q'];),

请参阅 http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions 了解详细信息。

AFAIK the parameter you recieve in your PHP script has the key "q" (i.e. $search = $_GET['q'];)

See http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions for details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文