Функция JQuery GET работает только в первый раз, когда вызывается функция change()
У меня есть следующий метод, связанный с утопить ящик
$('#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 я вызываю сервлет, который загружает данные из базы данных. Это утонуть
<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. Когда я выбираю параметры телефона, функция change() вызывается заново, а также функция GET. Но когда я снова выбираю опцию Car, вызывается функция change(), но не функция GET. Функция GET не вызывает сервлет и возвращает только старые значения в первый раз, когда она была вызвана.
Кто-нибудь может объяснить, что происходит?
2 ответа
На странице скорее всего кешируется ваш старый запрос, попробуйте добавить cache: false,
на ваш звонок.get.
$.ajaxSetup ({cache: false });
У вас есть два назначенных триггера, один из события jquery, а другой из стандартного javascript. либо измените код для использования jquery или стандартного javascript.
Сделайте следующее без onchange
вызвать на html.
$('#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);
}
}