本文主要是介绍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;}
这篇关于BootstrapValidator的Remote远程验证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!