0

私は現在、グリッドにレコードを追加するための手動トランザクションで 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(…)だと思います)?

ありがとう、

4

1 に答える 1

0

私は PHP プログラマーではありませんが、お役に立てれば幸いです。

エラーが検出された場合にまず必要なのは、ヘッダーのPHP 関数に関するエラーHTTP ステータス コードを報告することです。さらに、エラーに関する情報 (表示するエラー テキスト) を応答本文に配置できます。応答の任意の形式を選択できます。

クライアント側では、errorTextFormatイベント ハンドルを使用して、サーバーの応答をデコードおよび再フォーマットできます。errorTextFormatから、エラー ダイアログに表示するテキストまたは HTML フラグメントを返すだけです。

インライン編集を使用する場合は、エラー ダイアログに表示するテキストをサーバー レスポンスに配置するか、errorfuncを使用する必要があります。

于 2011-05-01T10:18:28.020 に答える