Отображать хорошее сообщение об ошибке, когда что-то не так после ajax-запроса jqgrid - PullRequest
1 голос
/ 17 мая 2010

Я удаляю строки с помощью этой функции:

function deleteRow(){
 rows = jQuery("#category_grid").getGridParam('selarrrow');
 if( rows.length>0){
  jQuery('#category_grid').delGridRow(rows,{
   msg:'Verwijderen geselecteerde rijen?'   
  });
 }else{
  alert("Selecteer eerst een rij om te verwijderen!"); 
 }
}

но когда это терпит неудачу в моем php, серверная сторона и исключение выдается. Сообщение об ошибке выглядит не красиво. Как я могу показать errotext в диалоговом окне? или перехватить сообщение об ошибке после вызова ajax?

На данный момент сообщение об ошибке выглядит так: Состояние ошибки: «CDbException». Код ошибки: 500

Когда я гуглил, я обнаружил событие функции delGridRow, которое называется errorTextFormat. Это событие, где я ищу? Может кто-нибудь дать мне пример реализации этого мероприятия?

привет

Niels

1 Ответ

3 голосов
/ 17 мая 2010

Второй параметр delGridRow - это объект с опциями, поэтому вы можете сделать следующее:

jQuery('#category_grid').delGridRow(rows,{
    errorTextFormat: function (data) {
        if (data.responseText.substr(0, 6) == "<html ") {
            return jQuery(data.responseText).html();
        }
        else {
            return data.responseText;
            // or
            // return "Status: '" + data.statusText + "'. Error code: " +data.status;
        }
    }
});

Текст retText, который вы возвращаете функцией errorTextFormat, будет помещен в соответствующий div сообщения об ошибке относительно кода jQuery.html(retText) внутри функции delGridRow.

Кстати, я не вызываю delGridRow функцию напрямую. Вместо этого, если я добавлю панель навигации в jqGrid в отношении функции navGrid, я передам свою функцию errorTextFormat в качестве параметра стандартной «кнопке удаления». Чтобы быть точным, я делаю это в отношении $.jgrid.del:

jQuery.extend(jQuery.jgrid.del, {
    ajaxDelOptions: { contentType: "application/json" },
    mtype: "DELETE",
    reloadAfterSubmit: false,
    jqModal: false,
    serializeDelData: function (postdata) {
        return "";
    },
    errorTextFormat: function (data) {
        if (data.responseText.substr(0, 6) == "<html ") {
            return jQuery(data.responseText).html();
        }
        else {
            return "Status: '" + data.statusText + "'. Error code: " + data.status;
        }
    }
});

(реальный код моего errorTextFormat выглядит немного более сложным, но идея использования та же).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...