Jquery自动填充仅发布一次请求

时间:2013-02-22 16:38:31

标签: jquery autocomplete

我正在使用jquery自动完成功能。我对下面的代码不满意,因为必须有更好的方法来执行此操作。 (代码有效)

  1. 我希望用户在搜索框中输入3个字母
  2. 自动填充帖子参数和服务器响应
  3. 我们收到来自服务器的数据后,没有理由再次发布。 注意:每次用户添加新信件时,自动填充功能都会保留postind数据
  4. 由于我有数据,我想将此数据用作自动完成源
  5. 下面的代码有点问题。在选择一个它显示在框中。当我使用退格时,它不会刷新/填充建议

    问题: 如何使用自动填充功能仅发布一次并重复使用自动填充源的响应?

    如果有人可以建议或指出我可以阅读的任何文件。

    由于

    
    jquery-1.9.1.min.js
    jquery-ui-1.10.0/jquery-ui.js
    
         $("#birds").autocomplete
        ({
        source: function(request, response) {
        $.ajax(
        {
        url: "page.aspx",
        data: {
        Para: request.term,
        GroupID: 11,
        rGUI: 'd9',
        rURL: 'domain.com/',
        task: 'get Stuff'
        },
        type: "POST",  
        dataType: "json",  
        success: function(data) {
    
        //response: function(item) {
        var arr = $.map(data, function(item) {
        return {
        label: item.LN60,
        value: item.LN60,
        NDC: item.NDC
        }
        });
    
        $("#birds").autocomplete({
        source: arr,
        minLength: 1
        });
    
        $("#birds").autocomplete({
        close: function(event, ui) {
        suggestDrugs_Request();
        }
        });
    
        }
        });
        },
        minLength: 2,
        select: function(event, ui) {
        log(ui.item ? "Selected: " + ui.item.value + 
        " aka " + ui.item.NDC : "Nothing selected, input was "
         + this.value);
        }
        });
    
    

2 个答案:

答案 0 :(得分:4)

你应该做的不是将ajax调用添加到自动完成的source属性,而是将自动完成功能添加到ajax调用的回调中:

$.ajax({
//all your other call settings
 success: function(data){
  //init autocomplete
  $('#birds').autocomplete({
       source: data,
       //all your other autocomplete settings
  });
 }
});

答案 1 :(得分:1)

制作$ .ajax请求并在success: function(data) {函数内绑定自动复合(生成.autocomplete函数调用)。

然后将自动复制'source设置为返回的data(现在显然是静态的)