2011-09-19 111 views
1

我一直在尋找互聯網和jqGrid文檔,但是我找不到任何有關創建,更新,刪除(CRUD)操作的JSON響應格式。當然,應該有一個從PHP返回給jqGrid的JSON消息,告訴它CRUD操作是否成功?這條消息的格式是什麼,以及如何編寫jqGrid的javascript來響應該消息?我不是一個很好的程序員,所以完整的代碼答案將不勝感激。如何從PHP創建jqGrid JSON錯誤響應,然後用jqGrid javascript做出響應?

謝謝

回答

1

您不需要使用響應來創建,刪除和更新。

例如如果你做了一個創建操作,你正在調用一個「ajax操作」,它將你的數據添加到數據庫中。

現在有兩個possibilites:

  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框架和ZF使用500個響應代碼在默認情況下例外(至少我模板)

成功更新/刪除/創建後,您必須重新獲取整個jqGrid數據。

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

有沒有其他機制。 (使用它最後大約6個月前,也許改變了)

如果你想實現你自己的錯誤/成功處理,只需定義自己的消息,以任何你想要的格式,並在ajax成功函數回調中處理它。

如果你需要更多的代碼,並不緊急,請給我評論。

一個額外的建議:不要期望理解jqGrid立即。慢慢來,嘗試一些東西,玩它。在你感覺舒服之前需要一段時間。

+0

感謝幫助。相當惱人的是,內聯和表單編輯並不一致。內聯編輯顯示我的php返回的正確錯誤消息,而表單編輯顯示不同的消息。還得弄清楚和這個javascript的一面玩。當你在字符串中輸入一個數字字段時有時候會出現mysql失敗的問題,並且有時不會(它只是將數字字段置零)。 – Superdooperhero

+0

這是一個問題。你必須做一些檢查,插入的數據與你的MySQL表匹配。但是這可以在ajax調用中完成。例如你只需要一個字段中的數字,然後檢查它是否是一個數字。如果我的答案滿足你,請接受它。如果你不接受堆棧溢出的答案,你的問題很難被任何人回答。 (這是你的接受率) – evildead