Отображать хорошее сообщение об ошибке, когда что-то не так после ajax-запроса jqgrid

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

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. Это событие, где я ищу? Может кто-нибудь дать мне пример реализации этого мероприятия?

Привет

Нильс

1 ответ

Решение

Второй параметр 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 выглядит немного сложнее, но идея использования такая же).

Другие вопросы по тегам