BootstrapValidator的Remote遠程驗證

在使用BootstrapValidator的remote的時候,遇到了兩個問題;
1.data傳遞一直爲null
2.後臺返回值爲true的時候,前臺還是按照false處理

第一個問題:
原代碼:

 usertelephone: {//驗證input項:驗證規則
                  message: 'The username is not valid',

                  validators: {
                      notEmpty: {//非空驗證:提示消息
                          message: '手機號不能爲空'
                      },
                      stringLength: {
                          min: 11,
                          max: 11,
                          message: '手機號必須爲11位'
                      },
                      threshold: 11, //有6字符以上才發送ajax請求,(input中輸入一個字符,插件會向服務器發送一次,設置限制,6字符以上纔開始)
                      remote: {//ajax驗證。server result:{"valid",true or false} 向服務發送當前input name值,獲得一個json數據。例表示正確:{"valid",true}  
                          url: '/Login/CheckUserTelephoneEmail',//驗證地址
                          data:{userTelephone:$('input[name="usertelephone"]').val() }
                          },message: '手機號已被註冊',//提示消息
                          delay: 2000,//每輸入一個字符,就發ajax請求,服務器壓力還是太大,設置2秒發送一次ajax(默認輸入一個字符,提交一次,服務器壓力太大)
                          type: 'POST'//請求方式
                      },

原因:
因爲在獲取數據的時候並不是實時獲取的,而是按照一開始頁面加載時獲取的,所以顯然內容爲空,傳到後臺的數據也就是空的。
解決方法:
使用函數獲取所需要的值

 data:{userTelephone:function() {
                              return $('input[name="usertelephone"]').val() }
                          },

第二個問題:
官方文檔並沒有給出後臺需要返回給前臺的值有什麼要求,經過我的煩惱和測試。
傳到前臺的必須是Json格式,而且Json格式的內容必須是{valid = true}
原代碼:

 public JsonResult CheckUserTelephoneEmail(string userTelephone)
        {
            JsonResult ret = new JsonResult();

            ret.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            ret.Data = true;
            UserContract contract = LoadService<IUserService>().GetUserContract(userTelephone);

            if (contract != null)             //手機爲空,可以用
            {
                ret.Data = false;
            }
            return ret;
        }

原因:
JsonReslut.data的內容不是valid=true
解決方法:

//先增加一個內部類
 internal class str
        {
            public bool valid;
        }

public JsonResult CheckUserTelephoneEmail(string userTelephone)
        {
            JsonResult ret = new JsonResult();

            str hhh = new str() { valid = true };

            ret.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

            UserContract contract = LoadService<IUserService>().GetUserContract(userTelephone);

            if (contract != null)             //手機爲空,可以用
            {
                hhh = new str() { valid = false };
            }
            ret.Data = hhh;
            return ret;
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章