Как вы создаете jqGrid JSON-ответ об ошибке из PHP, а затем отвечаете на него с помощью jqGrid javascript? - PullRequest
1 голос
/ 19 сентября 2011

Я искал в интернете и документации по jqGrid, но не могу найти ничего о формате ответа JSON на операцию создания, обновления, удаления (CRUD). Конечно, должно быть сообщение JSON, которое возвращается из PHP в jqGrid, чтобы сообщить ему, была ли операция CRUD успешной? Каков формат этого сообщения и как бы вы кодировали javascript для jqGrid, чтобы ответить на это сообщение? Я не очень хороший программист, поэтому я хотел бы получить ответы на полный код.

Спасибо

1 Ответ

1 голос
/ 19 сентября 2011

Вам не нужно использовать ответ для создания, удаления и обновления.

Например, если вы делаете операцию создания, вы вызываете «операцию ajax», которая добавляет ваши данные в базу данных.

Теперь есть две возможности:

  1. Операция создания успешна
    • просто ничего не возвращает, означает пустую строку
    • (до тех пор, пока получен ответ 200по jqgrid все нормально)
  2. Операция создания не удалась
    • просто выдать исключение с измененным заголовком ответа

Если jqGrid получает код ответа, не равный 200, он показывает саму ошибку!

try {
    // insert something in your db
    // ok = true means everything fine
    // ok = false means something unpredictable happened
    if (!$ok) {
       throw new Exception('error');
    }

} catch (Exception $e) {

    header("Status: 500 Server Error caused by dbinsert jqgrid");
    var_dump($e->getMessage());
}

Извините за код, но это было быстрее всего, что я выбрал из головы сейчас :) Я использую jqGrid в сочетаниис Zend Framework и ZF по умолчанию использует 500 кодов ответа для исключений (по крайней мере, мой шаблон)

После успешного обновления / удаления / создания вам необходимо повторно получить все данные jqGrid.

jQuery("#your_jqgrid_id").jqGrid().trigger('reloadGrid');

У Афаика нет другого механизма.(Используется последний раз около 6 месяцев назад, может быть, это изменилось)

Если вы хотите реализовать свою собственную обработку ошибок / успехов, просто определите свое собственное сообщение в любом формате, который вы хотите, и обработайте его в обратном вызове функции успеха ajax.

Если вам нужно больше кода, и это не срочно, просто оставьте мне комментарий.

Еще один совет: не ожидайте, что сразу поймете jqGrid.Не торопитесь, попробуйте некоторые вещи, поиграйте с этим.Пройдет некоторое время, прежде чем вы почувствуете себя с ним комфортно.

...