Javascript 无法接收目标文件Typeahead.js中的值
我已经编写了一些脚本来自动填充搜索输入(来自数据库的搜索数据),连同查询,我正在远程url中发送一些动态变量以进行高级搜索 但我并没有在目标文件中收到任何数据,若只在“远程”中发送查询,则其工作正常,但与远程url中的动态变量一起,则其不工作!请检查我的代码并告诉我哪里错了Javascript 无法接收目标文件Typeahead.js中的值,javascript,php,jquery,typeahead.js,Javascript,Php,Jquery,Typeahead.js,我已经编写了一些脚本来自动填充搜索输入(来自数据库的搜索数据),连同查询,我正在远程url中发送一些动态变量以进行高级搜索 但我并没有在目标文件中收到任何数据,若只在“远程”中发送查询,则其工作正常,但与远程url中的动态变量一起,则其不工作!请检查我的代码并告诉我哪里错了 <script src="typeahead.min.js"></script> <script> $(document).ready(function(){ $('input.ty
<script src="typeahead.min.js"></script>
<script>
$(document).ready(function(){
$('input.typeahead').typeahead({
name: 'typeahead',
//remote:'subtasksearch.php?key=%QUERY',
//remote:'subtasksearch.php?key=%QUERY&&mani=123',
remote: {
url: 'subtasksearch.php?key=%QUERY&&mani=',
replace: function () {
var q = 'subtasksearch.php?key=%QUERY&&mani=';
if ($('#country').val()) {
q += encodeURIComponent($('#country').val());
}
return q;
}
},
limit : 10
});
});
</script>
由于远程url中的动态变量不起作用,我在控制台中观察到一些情况,数据正在url中传递并返回空数组,我想请检查下面的图片
请告诉我哪里错了!是否以错误的方式发送值?我认为问题在于如何发送查询变量-发送的是文本%query,而不是实际的查询值
url: 'subtasksearch.php?key=%QUERY&&mani=',
应该是包含变量的东西
url: 'subtasksearch.php?key='+QUERY+'&&mani=',
不确定typeahead插件,但可能this.val()
足以获取值,例如:
url: 'subtasksearch.php?key='+this.val()+'&mani=',
也请考虑使用准备好的语句来修补注射风险(即使在MySQL中):
更新 因此,查看您使用的实际插件,您似乎需要为suggestbox配置嗜血犬,而不仅仅是单独的typeahead。这意味着包含了侦探javascript源代码或使用了捆绑包<script src="http://twitter.github.com/typeahead.js/releases/latest/typeahead.bundle.min.js"> </script>
<script>
var tasks = new Bloodhound({
remote: {
url: 'subtasksearch.php?key=%QUERY.json',
wildcard: '%QUERY'
}
});
$('input.typeahead').typeahead({
name: 'typeahead',
source: tasks,
limit: 10
});
</script>
不,它说“uncaughtreferenceerror:querynotdefined”,您必须显式地定义查询变量(基于您实际想要的)。如果要发送提前输入的值,可以是
$('input.typeahead').val()
或this.val()
。谢谢,但我无法在此处传递动态变量!嗨,Manikanta,我在看了插件之后更新了我的答案。请看上面的第二次尝试,Manikanta知道远程选项不再有替换。您应该使用prepare:,我已经更新了我的问题,请检查
url: 'subtasksearch.php?key='+QUERY+'&&mani=',
url: 'subtasksearch.php?key='+this.val()+'&mani=',
<script src="http://twitter.github.com/typeahead.js/releases/latest/typeahead.bundle.min.js"> </script>
<script>
var tasks = new Bloodhound({
remote: {
url: 'subtasksearch.php?key=%QUERY.json',
wildcard: '%QUERY'
}
});
$('input.typeahead').typeahead({
name: 'typeahead',
source: tasks,
limit: 10
});
</script>
var country = $('#country').val()
var tasks = new Bloodhound({
remote: {
url: 'subtasksearch.php?key=%QUERY.json'+'&country='+country,
wildcard: '%QUERY'
}
});