Плагин Datatables добавить строку PHP

#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