2011-04-30 65 views
0

我目前正在使用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(...)我猜)?

感謝,

回答

0

我不是PHP prorgammer,但我希望我可以幫助你。

首先,您在錯誤檢測的情況下需要報告關於header PHP函數的錯誤HTTP status code。另外,您可以在響應正文中放置有關錯誤的信息(要顯示的錯誤文本)。您可以選擇任何格式的回覆。

在客戶端,您可以使用errorTextFormat事件句柄來解碼和重新格式化服務器響應。您應該從errorTextFormat中返回想要在錯誤對話框中顯示的文本或HTML碎片。

如果使用內聯編輯,只需在服務器響應中放置要顯示在錯誤對話框中的文本或使用errorfunc