我是jQuery和JS的新手。我看了一下,但没有找到一个点击我脑袋的答案。
我正在做典型的一个下拉内容取决于另一个人的选择。除了从第一个下拉框中提取变量的部分外,我完全正常工作。
以下是我的代码:
HTML:
<p>Processor Assignment *<br><small>Please Choose the Processor whom you are assigning this Serve. Only Network Member Providers are shown in this list.</small></p>
<select name="assigned_to" id="assigned_to">
<option value="2">test</option>
<option value="3">Test_Processor</option>
</select>
<p>Service Type*</p>
<p id="services_list">Please choose a processor.</p>
JS:
$(document).ready(assigned_to_selectbox_change);
function assigned_to_selectbox_change() {
$('#assigned_to').change(update_services_list);
}
function update_services_list() {
var processor_id = $('#assigned_to').attr('value');
$.get('http://example.com/path/to_ajax/method/' + processor_id, show_services_list);
}
function show_services_list(services) {
$('#services_list').html(services);
}
如果我对它进行硬编码,那么IE http://example.com/path/to_ajax/method/3
这一切都在游戏中。一切都按预期填充。
知道为什么它没有拿起assigned_to值吗?我已经确认PHP / MySQL / etc正常工作,并在传递变量时返回正确的结果。
答案 0 :(得分:4)
尝试使用.val()
代替.attr('value')
:
var processor_id = $('#assigned_to').val();
另外,如果没有特定的原因你将代码分成如此多的函数,我发现这更简洁:
$(document).ready(function() {
$('#assigned_to').change(function() {
$.get('http://example.com/path/to_ajax/method/' + this.value, function(services) {
$('#services_list').html(services);
});
});
}));