#jquery #datatables
#jquery #таблицы данных
Вопрос:
Запрос add row, который должен быть выполнен datatables, похоже, не отправляет запрос на страницу .php. когда я нажимаю Подтвердить в форме AddNewRow, он добавляет только строку в таблицу данных на веб-странице и не предупреждает меня о каких-либо выводах со страницы php ‘AddData.php «как и в случае с Удалением и редактированием, единственный код в нем — это эхо-тест, чтобы проверить, работает ли он.
Я использую редактируемый плагин для таблиц данных.
Форма, которая требуется в HTML для работы плагина makeEditable AddNewRow, работает нормально, форма отображается с правильными кнопками и полями.
Как я могу проверить, отправляет ли он запрос AJAX?, какие функции или свойства я могу использовать для проверки отправляемых данных и изменения того, какие данные должны быть отправлены?
Вот код для создания моих таблиц данных:
$('#tmTabs').tabs( {
"show": function(event, ui) {
//make datatable columns resize to adjust to changing tabs
}
} );
$('.dataTable').each(function(){
//get ID of current table;
tblID = $(this).attr("id");
var pattern = "[0-9] ";
$tblIDNum = tblID.match(pattern);
//transform this table into a data table
$(this).dataTable({
"bProcessing":true,
"sScrollY": "600px",
"sScrollX": "100%",
"bScrollCollapse": true,
"bPaginate": false,
"bJQueryUI": true
})
.makeEditable({
//ajax requests for server-side processing
sUpdateURL: "UpdateData.php",
sAddURL: 'AddData.php',
sDeleteURL: "DeleteData.php",
sReadOnlyCellClass: "read_only",
//Button Customization
oAddNewRowButtonOptions: {
label: "Add...",
icons: { primary: 'ui-icon-plus' }
},
oDeleteRowButtonOptions: {
label: "Remove",
icons: { primary: 'ui-icon-trash' }
},
oAddNewRowOkButtonOptions: {
label: "Confirm",
icons: { primary: 'ui-icon-check' },
name: "action",
value: "add-new"
},
oAddNewRowCancelButtonOptions: {
label: "Close",
class: "back-class",
name: "action",
value: "cancel-add",
icons: { primary: 'ui-icon-close' }
},
oAddNewRowFormOptions: {
title: 'Add New Row',
show: "blind",
hide: "explode"
},
//Link button ids
sAddDeleteToolbarSelector: ".dataTables_length",
sAddNewRowFormId: "formAddNewRow" $tblIDNum,
sAddNewRowButtonId: "btnAddNewRow" $tblIDNum,
sAddNewRowOkButtonId: "btnAddNewRowOk" $tblIDNum,
sAddNewRowCancelButtonId: "btnAddNewRowCancel" $tblIDNum,
sDeleteRowButtonId: "btnDeleteRow" $tblIDNum
});
enter code here
});
Ответ №1:
Используйте сетевую панель firebug, чтобы увидеть, завершен ли вызов Ajax.
Если строка добавляется в таблицу без какого-либо предупреждения, тогда кажется, что ваша страница php вызвана и что она вернула что-то, что принимается плагином в качестве действительного идентификатора новой строки.
Обратите внимание, что если ваша страница возвращает какой-либо ответ, этот ответ будет рассматриваться как идентификатор новой строки. Если вы сможете найти атрибут id новой строки, вы увидите, что он имеет значение, возвращаемое с сервера.
По вашему описанию я полагаю, что вызывается ваша серверная страница, что вставка на стороне сервера не удалась, но плагин считает, что все в порядке, и строка добавляется.
Единственный способ вернуть код ошибки с сервера — это принудительно ввести Ajax error, установив код состояния ответа на некоторый код ошибки, например, 404, после чего плагин отобразит тело ответа во всплывающем окне и отменит редактирование. Смотрите более подробную информацию об обработке ошибок на http://code.google.com/p/jquery-datatables-editable/wiki/AddingNewRecords#Handling_server_errors