Функция editRow имеет следующие параметры:
jQuery("#grid_id").jqGrid('editRow',rowid, keys, oneditfunc, succesfunc, url,
extraparam, aftersavefunc,errorfunc, afterrestorefunc);
Ваш текущий код использует только succesfunc
. Важно, чтобы сервер возвращал некоторый код состояния HTTP , который больше или равен 400. Тогда ответ сервера будет интерпретироваться как ошибка jQuery.ajax и jqGrid. Чтобы отобразить любое сообщение об ошибке или любое другое действие в случае ошибки, вы должны использовать параметр errorfunc функции editRow .
Еще одно маленькое замечание. Вы должны использовать jQuery.parseJSON или JSON.parse
вместо использования eval
.
ОБНОВЛЕНО : Я отвечу здесь на ваши вопросы из комментария. Почему важно использовать errorfunc
и не всегда succesfunc
? Есть разные причины. Если вы заполните коробку с сахаром, содержащим этикетку, это может иметь горькие последствия на вашей кухне. Точно так же в случае неправильного использования различных функций обратного вызова editRow
. Я могу привести лишь несколько примеров:
- Ошибки могут быть вызваны вашей серверной частью не только явно . Ваш веб-сервер может выдать исключение из любого другого вашего кода, такого как SQL-запросы. Даже если вы уловите все такие ошибки, входные данные, отправленные на сервер в неверном формате или с другой ошибкой, могут привести к ответу с ошибочным статусом HTTP и описанием ошибки. Такое сообщение об ошибке выдаст ваш веб-сервер используемой вами платформы (ASP.NET, PHP и т. Д.).
- jQuery, используемый jqGrid, должен знать, какой ответ сервера успешен, а какой - ответ об ошибке. Часто ответ об ошибке имеет другой формат , поэтому не будет проанализирован jQuery.ajax (jQuery не преобразует его из строки JSON в объект).
- Для jqGrid важно знать, был ли ответ успешным или нет. В случае ошибки jqGrid сделать одно после ответа, в случае успешного ответа - другое. Будут вызваны разные события, будут показаны разные сообщения и т. Д.
То, что я написал о работе с ошибками, является общим правилом. jqGrid определяет много событий в случае ошибок. Например, loadError для заполнения сетки, errorTextFormat для всех типов редактирования формы, errorCell для редактирования ячейки и errorfunc для встроенного редактирования , Все методы основаны на том факте, что в случае ошибки ответ сервера имеет код состояния HTTP, который соответствует ошибке (больше или равен 400).