Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery自动完成post请求仅一次_Jquery_Autocomplete - Fatal编程技术网

Jquery自动完成post请求仅一次

Jquery自动完成post请求仅一次,jquery,autocomplete,Jquery,Autocomplete,我正在使用jquery自动完成。我对下面的代码不满意,因为必须有更好的方法来做到这一点。(守则工程) 我希望用户在搜索框中输入3个字母 自动完成post参数和服务器响应 我们从服务器获得数据后,没有理由再次发布。 注意:每次用户添加新信件时,自动完成将保留postind数据 因为我有这些数据,所以我想使用这些数据作为自动完成的源 下面的代码有一个小问题。在“选择一个”时,它将显示在框中。当我使用退格时,它不会刷新/填充建议 问题: 如何使用autocomplete只发布一次,并将响应和源代码重新

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

  • 我希望用户在搜索框中输入3个字母
  • 自动完成post参数和服务器响应
  • 我们从服务器获得数据后,没有理由再次发布。 注意:每次用户添加新信件时,自动完成将保留postind数据
  • 因为我有这些数据,所以我想使用这些数据作为自动完成的源
  • 下面的代码有一个小问题。在“选择一个”时,它将显示在框中。当我使用退格时,它不会刷新/填充建议

    问题: 如何使用autocomplete只发布一次,并将响应和源代码重新用于autocomplete

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

    谢谢

    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); } }); jquery-1.9.1.min.js jquery-ui-1.10.0/jquery-ui.js $(“#鸟”).autocomplete ({ 来源:功能(请求、响应){ $.ajax( { url:“page.aspx”, 数据:{ 第2段:请求期限, 组ID:11, rGUI:'d9', rURL:'domain.com/', 任务:“获取内容” }, 类型:“POST”, 数据类型:“json”, 成功:功能(数据){ //答复:职能(项目){ var arr=$.map(数据、函数(项){ 返回{ 标签:item.LN60, 价值:第1.LN60项, NDC:item.NDC } }); $(“#鸟”).autocomplete({ 资料来源:arr, 最小长度:1 }); $(“#鸟”).autocomplete({ 关闭:功能(事件、用户界面){ 建议药物请求(); } }); } }); }, 最小长度:2, 选择:功能(事件、用户界面){ 日志(已选择ui.item?“+ui.item.value+ “aka”+ui.item.NDC:“未选择任何内容,输入为” +这是价值); } });
    发出$.ajax请求并在
    success:function(data){
    函数中绑定自动完成(进行.autocomplete函数调用)


    然后将autocompletes'
    source
    s设置为返回的
    数据(现在显然是静态的)

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

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

    使用缓存…同样在退格方面,字符是否在minLength下?缓存的问题在于,他是异步获取数据的。当他绑定自动完成时,缓存将不存在。jquery缓存在用户每次向输入框输入新字母时都会继续调用服务器我知道它可以工作…我使用了这种方法成百上千次。:)祝你好运!布赖恩,按照你当时的建议做:我必须手动测试何时需要打电话?我想知道是否有办法绑定自动完成并在该例程中处理所有内容。如果没有,你的建议有意义,我将测试它。我不明白你的意思。此函数将在当页面加载时,获取用于自动完成的源数据,然后在返回数据时将其绑定到#birds元素。谢谢Micah。这与Brian的建议非常接近