如何使用动态请求参数实现像谷歌一样的自动完成
How to implement Autocomplete like Google with dynamic request parameters?
我正在像谷歌一样使用jQuery插件Autocomplete来处理表单字段foo
:
$(function() {
$("#foo").autocomplete({
minLength: 3,
limit: 5,
source : [{
url:"/my/ajax/controller/foo?data[name]=%QUERY%",
type:'remote'
}],
});
});
URI/my/ajax/controller/foo?data[name]=%QUERY%
调用数据库服务(执行类似SELECT * FROM foo WHERE name LIKE %name%
的语句),预处理数据,并提供类似['qwer', 'asdf', 'yxcv']
的简单数组。
现在我想将自动完成添加到另一个字段(bar
)。不同之处在于,它需要foo
的当前值进行筛选,因为目标SQL查询看起来像SELECT * FROM bar WHERE number JOIN foo ON bar.foo_name = foo.name WHERE number LIKE %number% AND foo.name = foo_name
。以下是我如何尝试实现它:
$(function() {
$("#bar").autocomplete({
minLength: 3,
limit: 5,
valueKey:'number',
source : [{
url:"/my/ajax/controller/bar?data[number]=%QUERY%&data[foo_name]=" + $('#foo').val(),
type:'remote'
}],
});
});
但是foo
的值只读取一次——当页面加载时。这意味着,更改和当前值将被忽略。我试图传递一个回调而不是URL,但没有成功。
如何让"像谷歌一样的自动完成"处理动态变化的字段
$(function() {
$("#bar").autocomplete({
minLength: 3,
limit: 5,
source : [
function(q,add){
$.getJSON("/my/ajax/controller/bar?data[number]=" + q + "&data[foo_name]=" + $('#foo').val(), function(resp) {
add(resp);
})
}],
});
});
相关文章:
- ajax请求的顺序总是不同的
- Meteor如何接收HTTP请求
- 有没有一种方法可以防止img get请求使用css或js发生
- 从ajax请求中获取javascript对象
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 在openshift node js应用程序中获取请求
- 反应路由器弄乱了请求网址
- 在我的情况下,如何进行http请求
- 使用密码对话框Javascript请求帮助
- servlet中的请求对象,而不是从jsp接收参数值
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- 如何使用动态请求参数实现像谷歌一样的自动完成
- Ajax是否像HTTP请求一样安全?
- 让 jquery jqxhr 像已经在发送请求一样
- 并行请求或像节点.js一样排队
- 如何让我的点击每次都得到一个新的Ajax请求,而不仅仅是像以前一样使用相同的Ajax请求