jqgrid php: как сообщить об ошибке в диалоговом окне

#jqgrid #jqgrid-php

#jqgrid #jqgrid-php

Вопрос:

В настоящее время я использую реализацию jqGrid php с ручной транзакцией для добавления записи в сетку.

Например.:

 $oper = jqGridUtils::GetParam('oper');
if ($oper == 'add') {

    $grid->trans = false;       // disable the transaction
    try {

        jqGridDB::beginTransaction($conn);

        $reference = jqGridUtils::GetParam('reference');
        $name = jqGridUtils::GetParam('name');
        $brand = jqGridUtils::GetParam('brand');
        $price = jqGridUtils::GetParam('price');
        $total_quantity_left = jqGridUtils::GetParam('total_quantity_left');
        $product = jqGridDB::prepare($conn,
                                     "INSERT INTO product (id, reference, name, brand, price,    total_quantity_left) VALUES (NULL,?,?,?,?,?)",
                                     array($reference,
                                           $name,
                                           $brand,
                                           $price,
                                           $total_quantity_left,
                                           )
                                 );
        $stock1 = jqGridDB::prepare($conn,
                                    "INSERT INTO stock (id, shop_id, product_id, quantity) SELECT NULL, 1, (SELECT MAX(id) FROM product), ?",
                                    array(jqGridUtils::GetParam('quantity_shop1'))
                                    );
        $stock2 = jqGridDB::prepare($conn,
                                    "INSERT INTO stock (id, shop_id, product_id, quantity) SELECT NULL, 2, (SELECT MAX(id) FROM product), ?",
                                    array(jqGridUtils::GetParam('quantity_shop2'))
                                    );

        jqGridDB::execute($product);
        jqGridDB::execute($stock1);
        jqGridDB::execute($stock2);
        jqGridDB::commit($conn);

    } catch(Exception $e) {
        jqGridDB::rollBack($conn);
        echo $e->getMessage();
    }
}
  

Пока это работает нормально.

Проблема, с которой я столкнулся сейчас, заключается в том, что я хочу сообщить пользователю, произошла ли ошибка во время транзакции: обычно я хотел бы открыть диалоговое окно с ошибкой, показывающее $ e-> GetMessage() или причину ошибки.

Поскольку ошибка обнаружена на уровне php, как мне вызвать часть кода javascript для достижения этой цели (alert (…) или $.jqgrid.info_dialog (…) Я полагаю)?

Спасибо,

Ответ №1:

Я не проргаммер PHP, но я надеюсь, что смогу вам помочь.

Первое, что вам нужно в случае обнаружения ошибки, это сообщить об ошибке кода состояния HTTP в отношении функции PHP header. Дополнительно вы можете разместить информацию об ошибке (текст ошибки для отображения) в теле ответа. Вы можете выбрать любой формат ответа.

На стороне клиента вы можете использовать дескриптор события errorTextFormat для декодирования и переформатирования ответа сервера. Вы должны просто вернуть из errorTextFormat текст или фрагмент HTML, который вы хотите отобразить в диалоговом окне ошибки.

В случае использования встроенного редактирования вам следует просто поместить в ответ сервера текст, который вы хотите отобразить в диалоговом окне ошибки, или использовать errorfunc.