jquery. Validator验证框架ajax返回json数据
今天在使用jquery. Validator验证框架的过程中遇到了一个这个的问题:
我需要动态的去验证注册邮箱是否已经存在了,所以需要用到ajax请求来解决该问题。但在使用该验证框架的ajax异步请求时,因为我是通过json格式来传递数据的,后台也是返回json类型数据。Js代码如下:
$("#registerModal").validator({rules:{userName:{required:true,rangelength:[4,15]},password:{required:true,rangelength:[5,15]},passwordAgain:{required:true,equalTo:"#password"},email:{required:true,email:trueremote : {// ajax验证邮箱地址是否已存在url : "login!emailIsUnique",type : "post",dataType : "json",data : {email : function() {return $("#inputEmail").val();}},dataFilter : function(data, type) {//接收返回数据alert(data);if (data.flag == "1101") {return false;} else {return data;}}} }}});
但是在后台返回的函数里我通过“data.flag”却没能拿到我想要的值,也就是if一直没进入。并且data数据里面的flag是有值的等于1101,但是“data.对象”却变成了undefined了。
后台代码:
public String emailIsUnique(){logger.info("验证邮箱!");List<Userinfo> userList = userService.findAllUser();for(int i=0;i<userList.size();i++){if(email.equals(userList.get(i).getEmail())){flag=PageStatus.EMAIL_IS_REPEAT;//1101return "json";}}return "json";}
后面通过查找相关的资料并结合alert()对相关信息的调试,发现虽然该验证框架定义的数据类型(dataType=’json’)为json类型,但是其实仅仅只是一个json字符串。也就是说它返回来的值其实只是一个字符串。那么如何解决该问题呢?这里我提供两种不同的方法:
方法一:
改变后台代码,将if中的flag直接通过写的方式写到前台去;
public void emailIsUnique() throws IOException{logger.info("验证邮箱!");List<Userinfo> userList = userService.findAllUser();for(int i=0;i<userList.size();i++){if(email.equals(userList.get(i).getEmail())){flag=PageStatus.EMAIL_IS_REPEAT;//1101HttpServletResponse response = ServletActionContext.getResponse();PrintWriter writer = response.getWriter();writer.print(flag);writer.flush();writer.close();}}}
这样直接将flag的值“1101”通过字符串的形式写出。
这种方式,主要是因为jquery验证框架数据接收对象“data”只接收字符串类型。此时data返回的值即为“1101”。但这种方式真心的感觉很费功夫。
方法二:后台代码不变,只需在前台代码js里面加入一点点代码。
java后台:
public String emailIsUnique(){logger.info("验证邮箱!");List<Userinfo> userList = userService.findAllUser();for(int i=0;i<userList.size();i++){if(email.equals(userList.get(i).getEmail())){flag=PageStatus.EMAIL_IS_REPEAT;//1101return "json";}}return "json";}
js代码修改:
dataFilter : function(data, type) {alert(data);var asas=jQuery.parseJSON(data);alert(asas.flag);if (asas.flag == "1101") {return false;} else {return data;}}
只需要加入红色部分,即解决了该问题。这个方法是利用Jquery自带的方法,将字符串转换成json类型数据。因为我们可以加入alert(data)看一下data数据的组织形式便可以发现其实该数据也是已key-value的形式传递的。另外这种方式同样也适用于“data.对象.属性”例如:data.User.userName。个人认为这种方式比起方法一要好多了。
jquery. Validator验证框架ajax返回json数据相关推荐
- (thinkphp、jQuery)ajax返回json数据
Thinkphp部分代码: <?php namespace Yxg\Controller;use Think\Controller;class IndexController extends C ...
- jquery.validator验证后ajax提交出现错误解决
今天使用jquery.validator验证后作ajax提交,总是不能成功:之后发现原来是页面中有报错没有解决.当把页面中的报错解决掉时,可以ajax提交了 <!DOCTYPE html> ...
- java ajax返回json数据json对象
注意需要引入6个jar包 response.setContentType("text/html;charset=utf-8");PrintWriter writer = respo ...
- html如何遍历ajax数组,ajax返回json数组遍历添加到html
大致需求为类型限制根据类型获取不同结果列表,再根据模糊查询搜索出结果,效果如下:- 例子:利用AJAX返回JSON数据,间接访问数据库,查出Nation 表,并用下拉列表显示 造一个外部下拉列表框 J ...
- ajax如何传递josn数据,jq之ajax以及json数据传递
闭包演示 function transfer(){ var dat = $( "#sel" ).val(); //console.log(dat) $.ajax({ type:&q ...
- jquery的ajax异步请求接收返回json数据
jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以.这篇文 ...
- ajax 循环html元素,AJAX返回API数据并使用jQuery循环遍历嵌套的JSON数据
我使用AJAX连接到返回JSON对象的API(请参阅下面的JSON代码参考),并试图循环并解析要在HTML元素内部呈现的JSON数据.AJAX返回API数据并使用jQuery循环遍历嵌套的JSON数据 ...
- JavaWeb-----Ajax异步请求 json对象 服务器如何返回json数据 使用ajax完成一个案例
1. 回顾 1. servlet的生命周期: 2. filter: 过滤放行和拦截一些资源.比如:黑白名单,登录校验,编码设置等. (1)创建一个类并实现Filter接口以及重写接口的抽象方法 ...
- spring MVC之返回JSON数据(Spring3.0 MVC+Jackson+AJAX)
参考: http://angelbill3.iteye.com/blog/1985075 问题:在进行springmvc返回json数据的时候报如下错误:用上面的controller,访问:http: ...
最新文章
- 微软压力测试工具 web application stress
- php判断邮箱是否合法性,php验证邮箱地址合法性
- LeetCode-二分查找-374. 猜数字大小
- gem ransack(4000✨) 简单介绍
- 初识Mysql(part19)--我需要知道的3条Mysql语句之组合查询
- ASP.NET Core 基于声明的访问控制到底是什么鬼?
- 软件测试都有哪些证书,软件测试都有哪些证书呀?有用吗?
- SQL 的 left join 和 right join
- 【个人笔记】OpenCV4 C++ 图像处理与视频分析 10课
- golang中apend_golang的append()为什么不会影响slice的地址?
- 计算机cpu近几年价格,2014年6月15日电脑CPU最新报价(表格)
- bootstrap表格自动换行
- QPS,TPS,RT是什么?
- spring核心技术之Resource资源理解
- Linux如何创建用户及设置权限
- Unity 智能语音助手
- 用scrapy进行网页抓取
- max导出fbx动画模型导入unity后播放会出现局部模型扭曲解决办法总结
- 南非监管机构严厉打击Facebook的联系人共享
- 【计算机毕业设计】50.课程设计管理系统
热门文章
- spring data redis的使用jar包版本冲突问题
- java利用poi生成/读取excel表格
- memcmp与strcmp区别
- 浅析数字签名的工作原理 【小白级别的原创文章 仅供扫盲】
- Android-Universal-Image-Loader-master 详解
- 匹配objectuse rootsift= sqrt( sift / sum(sift) ) to improve object retrieval
- swift扩展Extensions
- python 三目运算符
- [转帖]成为合格系统管理员的标准
- Python学习日志(二)