今天在使用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数据相关推荐

  1. (thinkphp、jQuery)ajax返回json数据

    Thinkphp部分代码: <?php namespace Yxg\Controller;use Think\Controller;class IndexController extends C ...

  2. jquery.validator验证后ajax提交出现错误解决

    今天使用jquery.validator验证后作ajax提交,总是不能成功:之后发现原来是页面中有报错没有解决.当把页面中的报错解决掉时,可以ajax提交了 <!DOCTYPE html> ...

  3. java ajax返回json数据json对象

    注意需要引入6个jar包 response.setContentType("text/html;charset=utf-8");PrintWriter writer = respo ...

  4. html如何遍历ajax数组,ajax返回json数组遍历添加到html

    大致需求为类型限制根据类型获取不同结果列表,再根据模糊查询搜索出结果,效果如下:- 例子:利用AJAX返回JSON数据,间接访问数据库,查出Nation 表,并用下拉列表显示 造一个外部下拉列表框 J ...

  5. ajax如何传递josn数据,jq之ajax以及json数据传递

    闭包演示 function transfer(){ var dat = $( "#sel" ).val(); //console.log(dat) $.ajax({ type:&q ...

  6. jquery的ajax异步请求接收返回json数据

    jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以.这篇文 ...

  7. ajax 循环html元素,AJAX返回API数据并使用jQuery循环遍历嵌套的JSON数据

    我使用AJAX连接到返回JSON对象的API(请参阅下面的JSON代码参考),并试图循环并解析要在HTML元素内部呈现的JSON数据.AJAX返回API数据并使用jQuery循环遍历嵌套的JSON数据 ...

  8. JavaWeb-----Ajax异步请求 json对象 服务器如何返回json数据 使用ajax完成一个案例

    1. 回顾 1. servlet的生命周期: 2. filter: 过滤放行和拦截一些资源.比如:黑白名单,登录校验,编码设置等.    (1)创建一个类并实现Filter接口以及重写接口的抽象方法 ...

  9. spring MVC之返回JSON数据(Spring3.0 MVC+Jackson+AJAX)

    参考: http://angelbill3.iteye.com/blog/1985075 问题:在进行springmvc返回json数据的时候报如下错误:用上面的controller,访问:http: ...

最新文章

  1. 微软压力测试工具 web application stress
  2. php判断邮箱是否合法性,php验证邮箱地址合法性
  3. LeetCode-二分查找-374. 猜数字大小
  4. gem ransack(4000✨) 简单介绍
  5. 初识Mysql(part19)--我需要知道的3条Mysql语句之组合查询
  6. ASP.NET Core 基于声明的访问控制到底是什么鬼?
  7. 软件测试都有哪些证书,软件测试都有哪些证书呀?有用吗?
  8. SQL 的 left join 和 right join
  9. 【个人笔记】OpenCV4 C++ 图像处理与视频分析 10课
  10. golang中apend_golang的append()为什么不会影响slice的地址?
  11. 计算机cpu近几年价格,2014年6月15日电脑CPU最新报价(表格)
  12. bootstrap表格自动换行
  13. QPS,TPS,RT是什么?
  14. spring核心技术之Resource资源理解
  15. Linux如何创建用户及设置权限
  16. Unity 智能语音助手
  17. 用scrapy进行网页抓取
  18. max导出fbx动画模型导入unity后播放会出现局部模型扭曲解决办法总结
  19. 南非监管机构严厉打击Facebook的联系人共享
  20. 【计算机毕业设计】50.课程设计管理系统

热门文章

  1. spring data redis的使用jar包版本冲突问题
  2. java利用poi生成/读取excel表格
  3. memcmp与strcmp区别
  4. 浅析数字签名的工作原理 【小白级别的原创文章 仅供扫盲】
  5. Android-Universal-Image-Loader-master 详解
  6. 匹配objectuse rootsift= sqrt( sift / sum(sift) ) to improve object retrieval
  7. swift扩展Extensions
  8. python 三目运算符
  9. [转帖]成为合格系统管理员的标准
  10. Python学习日志(二)