2013-06-28 164 views
1

我有一個包含日期字段的jqGrid編輯表單。我想實現異常處理,以便來自服務器的錯誤消息將顯示在編輯表單中。示例響應:jqGrid:顯示服務器錯誤信息

HTTP/1.1 400 Bad Request 
Server: Apache-Coyote/1.1 
Date: Fri, 28 Jun 2013 15:47:21 GMT 
Content-Type: application/json 
Transfer-Encoding: chunked 
Connection: close 

11 
"Bad Date format" 
0 

的jqGrid僅顯示「錯誤狀態:‘錯誤的請求’錯誤代碼:400」,在表格的頂部。我怎麼能它也顯示錯誤消息:「錯誤的日期格式」?

回答

2

您應該使用errorTextFormat表單編輯回調。作爲參數,回調得到jqXHR對象,它是XMLHTTPRequest對象上的包裝對象。它的responseText屬性代表響應的正文(11\n"Bad Date format"\n0在你的情況下)。 status屬性爲您提供HTTP狀態代碼(在您的示例中爲400)。您可以使用getResponseHeadergetAllResponseHeaders來檢查所有HTTP headers

順便說一下,我發現很奇怪的是,響應包含Content-Type: application/json,但響應的主體不包含JSON字符串。

+0

奧列格,感謝您的答覆。我按照您的指示,並能讀取郵件錯誤是這樣的:{MTYPE: 「POST」,addCaption: 「添加新系統消息」, \t \t \t errorTextFormat:函數(請求){ \t \t \t VAR消息=請求.responseText; \t \t \t alert(message); \t \t}},...現在如何將消息自動顯示在窗體的頂部,如果可能的話附加到錯誤消息的其餘部分? – Pablo

+0

BTW內容類型是CXF返回的最初聲明的MIME類型。它顯然不會在錯誤的情況下更新它。 – Pablo

+0

@Pablo:'errorTextFormat'回調應該返回帶有應該顯示的文本或HTML片段的字符串。您可以在[答案](http://stackoverflow.com/a/6803206/315935)中找到示例。從答案中查看[演示](http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridWithMsgInEditForm.htm)。要小心,演示中'errorTextFormat'的代碼部分是**虛擬代碼**,應該將其刪除。 – Oleg

1

假設你的迴應包含2場:狀態(OK,ERROR,..)和消息,那麼你應該寫這樣的功能:

validateAfterSubmit = function(response, postdata){ 
     var json = response.responseText; // response text is returned from server. 
     var result = JSON.parse(json); // convert json object into javascript object. 
     return [result.status == 'OK', result.message, null]; 
    }; 

,並在編輯指定/添加選項:

  //edit options 
      { url: '...', 
       afterSubmit: validateAfterSubmit 
      }, 
      //add options 
      { url: '...', 
       afterSubmit: validateAfterSubmit 
      }, 

希望這可以幫助