所以為了更好的客戶體驗,以及項目的合理性,我們在服務(wù)器端封裝一個實體類(具體見AppCode/AjaxClass),代碼如下:
view sourceprint?1 [Serializable] public class AjaxClass { public string Msg { get; set; } public int Result { get; set; } }
就是一個最簡單的實體類,有2個屬性,Msg和Result,Msg用于存放驗證失敗的信息,Result用于存放結(jié)果。
看下WebSerivce的代碼如何修改:
view sourceprint?01 [WebMethod] public AjaxClass CheckUid(string uid) { //return uid == "testuid" ? true : false; AjaxClass ajaxClass = new AjaxClass(); try { if (uid == "testuid") { ajaxClass.Msg = "用戶名已存在,請重新輸入!"; ajaxClass.Result = 0; } if (uid.IndexOf("test") == -1) { ajaxClass.Msg = "用戶名格式不正確,用戶名必須包含test,請重新輸入!"; ajaxClass.Result = 0; } else { ajaxClass.Msg = "格式正確!"; ajaxClass.Result = 1; } } catch { ajaxClass.Msg = "程序出現(xiàn)異常,請聯(lián)系管理員!"; ajaxClass.Result = 0; } return ajaxClass; }
上面的WebService就完整的實現(xiàn)了我先前說的3種錯誤情況(由于這邊僅僅是例子所以就只有表示層,實際開發(fā)中需要分層開發(fā),此代碼應(yīng)該放入業(yè)務(wù)邏輯層)
注意:在webservice返回值前,如果檢查成功必須要為ajaxClass.Result = 1,否則客戶端驗證會無法通過。
雖然完成了服務(wù)器端的代碼修改,但是直接運(yùn)行頁面還是會出錯,這是因為我上面所說過的,jQuery.Validate的remote遠(yuǎn)程的輸出只能是true或者false,我們來看下具體的代碼,其中注釋掉的就是原來官方的代碼:
view sourceprint?01 success: function(response) { if (response.Result) {//if(response){ var submitted = validator.formSubmitted; validator.prepareElement(element); validator.formSubmitted = submitted; validator.successList.push(element); validator.showErrors(); } else { var errors = {}; //errors[element.name] = response.Result || validator.defaultMessage(element, "remote"); errors[element.name] = response.Msg; validator.showErrors(errors); } previous.message = response.Msg; //previous.valid = response; previous.valid = response.Result; validator.stopRequest(element, response.Result); }
出處:博客園
責(zé)任編輯:bluehearts
上一頁 使用jQuery.Validate進(jìn)行客戶端驗證(后篇) 下 [2] 下一頁 使用jQuery.Validate進(jìn)行客戶端驗證(后篇) 下 [4]
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|