提问者:小点点

Jquery只自动完成一次post请求


我正在使用jquery自动完成。我对下面的代码不满意,因为肯定有更好的方法来做到这一点。(代码有效)

  1. 我希望用户在搜索框中输入3个字母
  2. 自动完成post参数和服务器响应
  3. 当我们有来自服务器的数据后,就没有理由再发布了。注意:每次用户添加新字母时,自动完成将保留postind数据
  4. 由于我有这些数据,我想将这些数据用作自动完成的源

下面的代码工作时有一个小问题。在选择一个时,它将显示在框中。当我使用backspace时,它不会刷新/填充建议。

问题:我如何使用自动完成只发布一次,并重复使用自动完成的响应和源?

如果有人能建议或指出我能读到的任何文件。

谢谢


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);
    }
    });


共1个答案

匿名用户

您应该做的不是将ajax调用添加到autocomplete的source属性,而是将autocomplete函数添加到ajax调用的回调:

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