#javascript #jquery #sql #extjs
#javascript #jquery #sql #extjs
Вопрос:
меня пытаются удалить данные из моей БД с помощью ext.js сценарий ниже: кажется, он работает в браузере, когда я нажимаю на значок «Удалить», но когда я нажимаю на какую-то другую панель инструментов, коснитесь какой-либо страницы браузера. он был перезагружен с моими же данными в сетке строк. Я действительно не знаю, что я удаляю только массив, но не удаляю фактическую БД, отправляя неправильные серверы или методы. Я не знаю. Я попытался использовать другой метод для его удаления, но вернулась та же проблема.
Кто-нибудь может мне помочь? Я новичок в ext.javascript или ext.Ajax … и т.д..
коды:
var userHistoryGrid = Ext.create('Ext.grid.Panel', {
width: 880,
height: 450, //autoHeight: true, collapsible: false, title: 'Employee's Request History', icon: 'images/newtodo1.png', store: userHistoryStore, multiSelect: false, columnLines: false, enableColumnHide: false, enableColumnMove: false, enableColumnResize: false, selType: 'rowmodel',
viewConfig: {
emptyText: 'No prior requests',
stripeRows: false,
enableTextSelection: true,
getRowClass: function (record) {
return record.get('Status') == 'Approved' ? 'normal-row' : 'hilite-row';
}
},
items: [{
icon: 'images/delete.png',
tooltip: 'Delete Request',
handler: function (grid, rowIndex, colIndex) {
record = grid.getStore().getAt(rowIndex);
cellvalue = record.get('Delete');
if (cellvalue != 'Delete') {
Ext.MessageBox.confirm(
'Confirm Deletion',
'Delete this request?',
function (btn) {
if (btn == 'yes') {
cellvalue = record.get('EventID');
Ext.Ajax.request({
url: 'delUserHistoryGrid.asp',
async: false,
method: 'DELETE',
params: {
id: userHistoryStore
},
timeout: 30000,
success: function (result) {
userHistoryStore.reload();
userinfoStore.reload();
}
});
//delete userHistoryStore[rowIndex];
userHistoryStore.removeAt(rowIndex);
//eventStore.destroy(rowIndex);
//userHistoryStore.destroy(rowIndex);
//record.EventID.removeAt(grid);
userinfoStore.reload();
} else {
rowEditing.cancelEdit();
}
});
}
}
},
Ответ №1:
Несколько советов, которые помогут вам точно определить проблему:
-
Не удаляйте запись из хранилища после вызова ajax. Делайте это только в том случае, если это было успешно. Переместитесь
userHistoryStore.removeAt(rowIndex);
внутрь успешного обратного вызова. Я не думаюasync: false
, что на самом деле существует. Таким образом, ваш вызов ajax возвращается немедленно. Вы должны продолжить поток выполнения в обратном вызове. -
Добавьте
failure
обратный вызов и проверьте (точку останова или журнал) полученный ответ. Вы также должны проверить ответ вsuccess
случае, так как там тоже может быть какое-то интересное сообщение. Зависит от сервиса. -
Используйте инструменты разработчика вашего браузера и проверьте сеть. Сначала вы должны убедиться, что вызов ajax выполнен успешно, а затем вы получите правильный ответ. Проверьте код ответа. Если это не в 200-х годах, это ошибка. Вы можете выполнить поиск в Интернете еще раз, как только увидите полученный код ответа.
-
Ничего не зная о ваших сервисах или вашем приложении, я думаю, что передача всего хранилища в качестве вашего
id
параметра, вероятно, неверна. Разве вы не должны передаватьcellvalue
?
Комментарии:
1. Спасибо. Сначала я попытаюсь проверить веб, а затем добавлю ваши предложения в свой код и протестирую его. Надеюсь, это сработает. Я очень ценю вашу помощь.