我跟随方法制作了一个溺水盒
$('#cboUsuario').on('change',
function cargarAccesos(){
var username = $('#cboUsuario').val();
$.get('listEmpresasAcceso', {usuario: username, accion: 'SELECT'}, function(responseJson) {
$('#tblAccesosEmpresa').empty();
$('#tblAccesosEmpresa').append('<tr><td></td><td>Empresa</td></tr>');
for(var i = 0; i < responseJson.length; i++){
$check = '<input id="id' + responseJson[i].id + '" type="checkbox" value="' + responseJson[i].id + '" onclick="insertarAcceso(this)">';
$empresa = responseJson[i].descripcion;
$row = $('<tr><td>' + $check + '</td><td>' + $empresa + '</td></tr>');
$('#tblAccesosEmpresa').append($row);
$('#id' + responseJson[i].id).prop('checked', responseJson[i].flagAcceso == "1" ? true : false);
}
});
}
);
在GET函数中,我调用一个从数据库加载数据的servlet。 这是溺水盒
<select id="cboUsuario" onchange="cargarAccesos()">
假设这些是溺水盒上的值:
<option value="1">Default Value</option>
<option value="2">Car</option>
<option value="3">Phone</option>
<option value="4">Computer</option>
当我选择Car选项时,调用change()函数并调用GET函数。当我选择Phone选项时,会重新调用change()函数并且还会调用GET函数。但是当我再次选择Car选项时,调用了change()函数,但是没有GET函数。 GET函数不会调用servlet,只返回第一次调用它时的旧值。
任何人都可以解释发生了什么?
答案 0 :(得分:0)
您分配了两个触发器,一个来自jquery事件,另一个来自标准javascript。要么改变你的代码,要么使用jquery或标准的javascript。
执行以下操作,在html上没有onchange
触发器。
$('#cboUsuario').on('change',
function (){
var username = $('#cboUsuario').val();
$.get('listEmpresasAcceso', {usuario: username, accion: 'SELECT'}, function(responseJson) {
$('#tblAccesosEmpresa').empty();
$('#tblAccesosEmpresa').append('<tr><td></td><td>Empresa</td></tr>');
for(var i = 0; i < responseJson.length; i++){
$check = '<input id="id' + responseJson[i].id + '" type="checkbox" value="' + responseJson[i].id + '" onclick="insertarAcceso(this)">';
$empresa = responseJson[i].descripcion;
$row = $('<tr><td>' + $check + '</td><td>' + $empresa + '</td></tr>');
$('#tblAccesosEmpresa').append($row);
$('#id' + responseJson[i].id).prop('checked', responseJson[i].flagAcceso == "1" ? true : false);
}
});
}
);
或删除包含on
的事件附件,只需使用
function cargarAccesos(){
var username = $('#cboUsuario').val();
$.get('listEmpresasAcceso', {usuario: username, accion: 'SELECT'}, function(responseJson) {
$('#tblAccesosEmpresa').empty();
$('#tblAccesosEmpresa').append('<tr><td></td><td>Empresa</td></tr>');
for(var i = 0; i < responseJson.length; i++){
$check = '<input id="id' + responseJson[i].id + '" type="checkbox" value="' + responseJson[i].id + '" onclick="insertarAcceso(this)">';
$empresa = responseJson[i].descripcion;
$row = $('<tr><td>' + $check + '</td><td>' + $empresa + '</td></tr>');
$('#tblAccesosEmpresa').append($row);
$('#id' + responseJson[i].id).prop('checked', responseJson[i].flagAcceso == "1" ? true : false);
}
}
答案 1 :(得分:0)
该页面很可能会缓存您的旧请求,请尝试将cache: false,
添加到$ .get调用中。
$.ajaxSetup ({cache: false });