我试图将select元素的值作为参数发送到ajax请求。但是,它总是会在页面加载时发送元素的初始值,而不是当前选择的值。
我尝试通过在选择框更改时重置变量来更新变量,但这对ajax请求没有任何影响。
<select id="id_location">
<option value="1">...</option>
<option value="2">...</option>
<option value="3">...</option>
</select>
<script>
var list = $("#id_location").val();
$(document).ready(function() {
$("#id_location").change(function(){
list = $("#id_location").val();
})
$('#id_part_number').autocomplete({
serviceUrl: '/lookup',
width: 500,
params: {location: list}, // <-------- This variable is not updating
onSelect: function (suggestion) {
var request = $.ajax({
url: "/lookup",
type: "GET",
data: {"query": suggestion.data,
},
dataType: "json"
});
request.done(function(msg) {
$("#id_number").val(msg.number);
$("#id_desc").val(msg.description);
$("#id_par").val(msg.par);
})
}
});
})
</script>
对于javascript / jquery来说,我是一个完整的新手,而且我们已经能够通过谷歌搜索得到任何东西了。任何有关解决这个问题的见解都会非常感激。
编辑:上面的自动完成功能是外部库jquery-autocomplete的一部分。它的目的是每次附加它所附加的元素时发送ajax请求,在我的情况下是输入字段。我想使用请求中的参数发送#id_location元素的当前值。现在我只能在页面加载时发送元素的原始值并且无法更新它。
答案 0 :(得分:2)
找到答案。
params:{location: function(){ return $('#id_location').val()}},