jQuery自动完成发布请求仅一次

Posted

技术标签:

【中文标题】jQuery自动完成发布请求仅一次【英文标题】:Jquery autocomplete post request only once 【发布时间】:2013-02-08 08:28:49 【问题描述】:

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

    我希望用户在搜索框中输入 3 个字母 自动完成发布参数和服务器响应 我们从服务器获得数据后,没有理由再次发布。 注意:每次用户添加新字母时,自动完成都会保留 postind 数据 既然我有数据,我想用这个数据作为自动完成的来源

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

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

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

谢谢

jquery-1.9.1.min.js jquery-ui-1.10.0/jquery-ui.js $("#birds").autocomplete ( 来源:功能(请求,响应) $.ajax( 网址:“page.aspx”, 数据: 段:request.term, 组ID:11, rGUI: 'd9', rURL: 'domain.com/', 任务:'得到东西' , 类型:“发布”, 数据类型:“json”, 成功:函数(数据) //响应:函数(项目) var arr = $.map(数据,函数(项目) 返回 标签:item.LN60, 值:item.LN60, NDC:项目.NDC ); $("#birds").autocomplete( 来源:arr, 最小长度:1 ); $("#birds").autocomplete( 关闭:函数(事件,用户界面) 建议药物请求(); ); ); , 最小长度:2, 选择:函数(事件,用户界面) log(ui.item ? "选择:" + ui.item.value + " aka " + ui.item.NDC : "没有选择,输入是 " + this.value); );

【问题讨论】:

使用缓存...jqueryui.com/autocomplete/#remote-with-cache 。同样在退格方面,minLength下的字符是否? 缓存的问题在于他异步获取数据。当他绑定自动完成时,缓存将不存在。 每次用户在输入框中输入新字母时,jquery缓存都会不断调用服务器 【参考方案1】:

除了将 ajax 调用添加到自动完成的源属性之外,您应该做的是将自动完成功能添加到 ajax 调用的回调中:

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

【讨论】:

我知道它可以工作......我已经使用了数百次这种方法。 :) 祝你好运! Brian,按照您当时的建议进行操作:我必须在需要拨打电话时手动测试?我想知道是否有一种方法可以绑定自动完成并处理该例程中的所有内容。如果你的建议没有意义,我会测试它 我不明白你的意思。此函数会在页面加载时触发一次,获取源数据以进行自动完成,然后在返回数据时将其绑定到 #birds 元素。【参考方案2】:

发出 $.ajax 请求并在 success: function(data) 函数内绑定您的自动完成(产生 .autocomplete 函数调用)。

然后将自动完成的sources 设置为返回的data(现在显然是静态的)

【讨论】:

谢谢米卡。这接近于布赖恩的建议

以上是关于jQuery自动完成发布请求仅一次的主要内容,如果未能解决你的问题,请参考以下文章

iOS 上的 Google 地方信息自动完成功能 - 无法加载搜索结果 - 再试一次

使用纯 JS 和 JSON 自动完成 - 使 api 获取一次,然后让“输入”事件仅进行过滤

在自动完成 AJAX 请求中传递参数

来自cshtml中SQL Server查询的jquery UI自动完成列表

浏览器自动完成/保存的表单在 ajax 请求中不起作用

jQuery UI 自动完成:中止请求