将变量动态分配给jquery自动完成查询字符串
Dynamically assign variable to jquery autocomplete query string
我正在编写一个表单,用户可以在其中提交播放列表。有一个"艺术家"领域和一个"歌曲"领域。两者都是输入类型"text"。
我正在尝试在这两个字段中使用jquery的自动完成功能。艺术家的自动完成结果是用户按键的函数,歌曲的自动完成效果是用户按键和艺术家输入字段值的函数。
自动完成似乎可以在艺术家输入字段下填充建议列表。search.php
是读取查询字符串的脚本。
$(".artist").autocomplete("searchDev.php?type=artist&"+mydate.getTime(), {
width: 180,
selectFirst: false
});
在search.php
中,在a
击键后searchDev.php中$_GET的var_export产生
array (
'type' => 'artist',
1367531572213 => '',
'q' => 'a',
'limit' => '10',
'timestamp' => '1367531576911',
)
这很好。然而,当我试图在自动完成(歌曲输入字段(中为查询字符串(此处为window.sartist(提供变量时,
$(".song").autocomplete("search.php?type=song&sartist="+window.sartist+"&"+mydate.getTime(), {
width: 180,
selectFirst: false
});
sartist
定义不正确,即search.php中的var_export($_GET)
产生
array (
'type' => 'song',
'sartist' => '[object HTMLInputElement]',
1367525807081 => '',
'q' => 'a',
'limit' => '10',
'timestamp' => '1367526169637',
)
如果使用未附加到窗口的全局变量来代替查询字符串中的window.sartist
,则var_export($_GET)
会产生
array (
'type' => 'song',
'sartist' => '',
1367528252501 => '',
'q' => 'a',
'limit' => '10',
'timestamp' => '1367528260585',
)
因此,我怀疑查询字符串在加载后无法修改。是否有人有一个可行的解决方案,允许变量动态分配给自动完成查询字符串?基本上,我需要"歌曲"自动完成建议,这取决于"艺术家"字段的价值。
您只需要使用一个函数作为源,将多个动力学参数传递给查询:
$('.song').autocomplete({
var value = $(this).val();
source:function( request, response ) {
$.getJSON( "searchDev.php", {
term: value ,
data:{
type:"song",
myparam:$('#myparam').val()
}
}, response );
}
})
在本例中,如果当前input.song的值为"high hope",而#myparam字段的值为为"pink",则查询将显示为:searchDev.php?term=high+hope&type=song&myparam=pink
Fiddle(没有真正的数据源,只需查看控制台(:http://jsfiddle.net/RfuBP/3/jquery自动完成源选项的文档:http://api.jqueryui.com/autocomplete/#option-源
PS:在你的代码中,你确定window.sartist返回的是一个值而不是元素吗?
- 如何有效地将游戏数据存储在URL查询字符串中
- 从查询字符串参数推断出正确的数据类型
- AngularJS:获取链接中没有哈希的查询字符串值
- AngularJS,如何更改查询字符串
- 如何将activeadmin查询字符串传递给batch_action
- 如何从查询字符串中的输入字段发回文本
- Django在使用AJAX时没有接收到新的查询字符串
- 使用查询字符串方法清除浏览器缓存
- 用于刷新的Javascript更改查询字符串
- 我想将查询字符串变量添加到JSON名称/值对中
- 将查询字符串值从页面传递 asp.net 到 iframe
- jqueryajax生成查询字符串,如果未定义则不通过
- 如何将查询字符串传递到HTML框架
- AngularJs将查询字符串发布到c#控制器
- Jquery - 从查询字符串中获取“#”值之后,而不是在“?”符号值之后获取
- 在 JavaScript 中将查询字符串传递给 Web 服务 (ASP.NET)
- 在查询字符串中查找 where 子句
- POST encodeURI查询字符串内部服务器错误 500
- JavaScript:从具有使用 # 符号的路由的 URL 获取查询字符串
- 更改链接 URL 中的路径名,同时保持查询字符串不变