1

如何在特定时间调用ajax自动完成?这是我的代码

function auto(x){


x.autocomplete('ajax/getFriends',{
        max:500,
        width:300,
        minChars:2,
        autoFill: false,

        formatItem: formatItem,
        formatResult: formatResult
        });

        function formatItem(row) {
                return row[0];
                //return row[0] + " (<strong>id: " + row[1] + "</strong>)";
        }
        function formatResult(row) {
            return row[0].replace(/(<.+?>)/gi, '');
        }

         $("#comment").result(function(event, data, formatted) {
            $("#test1").val(data[1]);
            $("#test2").val(data[2]);
         });
    }

但它说错误 x.autocomplete 不是一个函数

我打电话给上面就像

auto("string");

谁能帮我解决这个问题

提前谢谢我的英语不好,如果有任何错误,请原谅

4

1 回答 1

0

我认为您对 jQuery 自动完成功能的整体工作方式感到困惑。在我看来,您正在将自动完成附加到您的字符串并为建议构建 HTML 元素。这不是自动完成功能的工作方式。

您想要做的是将自动完成功能附加到您的输入框。然后,只要在其中输入内容,自动完成功能就会在输入时自动触发。这就是它的构建方式。

因此,假设您的 HTML 代码中有一个 ID 等于 myAwesomeInputBox 的输入框:

<input type="text" id="myAwesomeInputBox"/>

要将自动完成(使用 ajax)绑定到此输入字段,只需在 Javascript 中执行以下操作:

$("#myAwesomeInputBox").autocomplete({
                source: function( request, response ) {

                        // request.term is the input in the textbox, encode for security reasons
                        var input = encodeURI(request.term); 

                        $.ajax({

                            // your ajax endpoint
                            url: 'ajax/getFriends', 

                            // the request method, modify to your actual method
                            type: 'GET', 

                            // whatever data you want to pass to your endpoint. 
                            // I'm assuming at least the input (with key userInput here) 
                            // and maybe the limit of the elements in the response array 
                            // the server should send back
                            data: {userInput: input, limit: 500}, 

                            // what to do on success (process the response) 
                            success: function(data){ 

                                // assuming your ajax endpoint returns a JSON encoded array with the suggestions as a response
                                var responseArray = $.parseJSON(data);

                                // pass the decoded response array to the jquery defined response method for autocomplete
                                response(responseArray); 
                            }, 

                            // what to do if the server returns an error
                            error: function(jqXHR, textStatus, errorThrown){
                                // pass an empty suggestions array maybe?
                                response(new Array()); 
                            }
                          }, 'json');
                    }
            });

对我来说棘手的部分是

response(responseArray); 

但是一旦你检查它,它是完全可以理解的。您只是将一个数组传递给 jQuery 自动完成处理程序以进行进一步处理。

我不确定以前版本的 jQuery 如何处理 ajax 自动完成,但这是 1.8.0 版(及更高版本)处理它的方式。

于 2012-12-14T10:28:38.680 回答