ajaxValidator 常见问题解决(传参,中文乱码)

ajaxValidator 常见问题解决(传参,中文乱码)

以下是作者对ajaxValidator的声明:
ajaxvalidator是大家问的最多的问题,修正一个bug(感谢网友“じ??w√”),并把大家最关心的问题,再做一次阐述。
bug现象:无论校验有没有校验通过,当控件再次得到焦点而再次失去焦点的时候tip里的提示就会停滞在得到焦点的提示
历次升级的相关记录:
a、为AjaxValidator添加一个addidvalue属性(是否自动添加id和值到url参数后面)
为了修复AjaxValidator在配置信息的时候,取不到运行时候值的bug,插件将自动在url后面自动添加,形式为"id=value"的网页参数。
在服务器端,你可以通过Request.querystring["id"]来取值。 具体演示请看demo1里的用户名输入和Default.asp教程x
异常说明:
开发过程中仍会出现乱码问题
例如:
 $("#thename").formValidator({onfocus:"用户名至少6个字符,最多40个字符",oncorrect:"输入格式正确"}).inputValidator({min:6,max:40,onerror:"你输入的用户名非法,请确认"})//.regexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"})
 .ajaxValidator({
     type : "get",
  url : "login.do",
  data:"action=isExist",
  datatype : "xml",
  success : function(data){
      root = data.documentElement;
      var rowSet = root.selectNodes("//delete");
            if( rowSet.item(0).selectSingleNode("value").text == "0" )
   {
                return true;
   }
            else
   {
                return false;
   }
  },
  buttons: $("#saveId"),
  error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
  onerror : "该用户名不可用,请更换用户名",
  onwait : "正在对用户名进行合法性校验,请稍候..."//function(){alert($("#pcode").val());}
 });
说明:
  data:"action=isExist&thename="+$('#thename').val(),这种方式是失效的,因为$('#thename').val()是固定不变的,而且是初始值,通常为空.
修改源码:
formValidator.js
 //ajax校验
 ajaxValid : function(returnObj)的方法中

 var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(srcjo.val());
改为:
 var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(encodeURIComponent(srcjo.val()));
因为只有通过前台两次编码,后台一次解码就可以解决乱码问题
thename=java.net.URLDecoder.decode(thename,"UTF-8");

对于jQuery formValidator ver3.3 中ajaxValidator中的url无法传递动态值的处理方式

formValidator3.3的ajaxValidator一些异常(1)

 

以下是作者对ajaxValidator的声明:

ajaxvalidator是大家问的最多的问题,修正一个bug(感谢网友“じ??w√”),并把大家最关心的问题,再做一次阐述。
bug现象:无论校验有没有校验通过,当控件再次得到焦点而再次失去焦点的时候tip里的提示就会停滞在得到焦点的提示
历次升级的相关记录:
a、为AjaxValidator添加一个addidvalue属性(是否自动添加id和值到url参数后面)
为了修复AjaxValidator在配置信息的时候,取不到运行时候值的bug,插件将自动在url后面自动添加,形式为"id=value"的网页参数。
在服务器端,你可以通过Request.querystring["id"]来取值。 具体演示请看demo1里的用户名输入和Default.aspx

 

处理方式:

 //ajax校验
 ajaxValid : function(returnObj)的方法中

 var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(srcjo.val());

改为:

 var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(encodeURIComponent(srcjo.val()));

因为只有通过前台两次编码,后台一次解码就可以解决乱码问题

thename=java.net.URLDecoder.decode(thename,"UTF-8");

注意前台必须编码两次,否则会仍是乱码.

============================================

以上方案仅能解决传递本身控件的id,而仍无法传递其他值.

 

如:有如下需求需要在指定的区域中是否在所选的服务时间内,则必须动态传递省,市,县信息

采用原方案,代码如下:

$("#pbookingtime").focus(function(){WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'%y-%M-%d',maxDate:'%y-%M-/#',oncleared:function(){$(this).blur();},onpicked:function(){$(this).blur();}})}).formValidator({onshow:"请输入的预约时间",onfocus:"请输入的预约时间",oncorrect:"√"}).inputValidator({min:"2008-01-01 00:00:00",max:"2010-01-01 23:59:59",type:"datetime",onerror:"日期必须在/"1900-01-01/"和/"3000-01-01/"之间"})//;//.defaultPassed();
  .ajaxValidator({
      type : "get",
   url : "<%=path%>/archives/serTime.do",
   data:"action=serTimeVerify&ram=" + Math.random()+"&search.pprovince="+$("#pprovince").val()+"&search.pcity="+$("#pcity").val()+"&search.pcounty="+$("#pcounty").val(),
   datatype : "xml",
   success : function(data){
       root = data.documentElement;
       var rowSet = root.selectNodes("//result");
             if( rowSet.item(0).selectSingleNode("value").text == "0" )
    {
                 return false;
    }
             else
    {
                 return true;
    }
   },
   buttons: $("#btnupdate"),
   error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
   onerror : "预约时间不在服务时间范围内!",
   onwait : "正在对预约时间进行合法性校验,请稍候..."
  });

 

   /*对于ajaxValidator动态传值无法成功,参考ajaxValidator原代码用以下方式实现*/

$("#pbookingtime").focus(function(){WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'%y-%M-%d',maxDate:'%y-%M-/#',oncleared:function(){$(this).blur();},onpicked:function(){$(this).blur();}})}).formValidator({onshow:"请输入的预约时间",onfocus:"请输入的预约时间",oncorrect:"√"}).inputValidator({min:"2008-01-01 00:00:00",max:"2010-01-01 23:59:59",type:"datetime",onerror:"日期必须在/"1900-01-01/"和/"3000-01-01/"之间"})//;//.defaultPassed();

 .functionValidator({
      fun:function(val,elem){
     $.ajax(
     {
      mode : "abort",
      type : "get",
      url : "<%=path%>/archives/serTime.do",
      data : "action=serTimeVerify&search.pbookingtime=" + $("#pbookingtime").val()+"&search.pprovince="+$("#pprovince").val()+"&search.pcity="+$("#pcity").val()+"&search.pcounty="+$("#pcounty").val(),
      dataType : "xml",
      success : function(data){
          root = data.documentElement;
          var rowSet = root.selectNodes("//result");
                if( rowSet.item(0).selectSingleNode("value").text == "0" )
       {
        $.formValidator.setTipState(elem,"onError","预约时间不在服务时间范围内!");
                    return false;
       }
                else
       {
                    $.formValidator.setTipState(elem,"onError","√");
                    return true;
       }
      },
      complete : function(){
       $("#btnupdate").attr({"disabled":false});
       $("#btnupdateauding").attr({"disabled":false});
      },
      beforeSend : function(xhr){
       //再服务器没有返回数据之前,先回调提交按钮
       $("#btnupdate").attr({"disabled":true});
       $("#btnupdateauding").attr({"disabled":true});
       $.formValidator.setTipState(elem,"onLoad","正在对预约时间进行合法性校验,请稍候...");
      },
      error : function(){
          $.formValidator.setTipState(elem,"onError","服务器没有返回数据,可能服务器忙,请重试");
          alert("服务器没有返回数据,可能服务器忙,请重试");
      }
     });
   }
  });

时间: 2024-11-05 18:24:37

ajaxValidator 常见问题解决(传参,中文乱码)的相关文章

服务器-URL传参中文乱码,new string(&amp;amp;quot;iso-8859-1&amp;amp;quot;,&amp;amp;quot;utf-8&amp;amp;quot;)方法不行

问题描述 URL传参中文乱码,new string("iso-8859-1","utf-8")方法不行 小白接触后台不多,用myecplise开了一个服务器(tomcat),其中有url参数:http://xxx(ip)/downloadservlet?name=小儿鼻出血.mp4 ,然后出现乱码,服务器无法定位到该文件. 查网发现大部分对name进行转码,用name= new string("iso-8859-1","utf-8&qu

url 编码 js url传参中文乱码解决方案_javascript技巧

1.配置文件web.config中 在节中加上整个网站的编码方式. <globalization fileEncoding="GB2312" requestEncoding="GB2312" responseEncoding="GB2312"/> 这样参数就以gb2312的中文编码方式传输了.而一般默认是utf-8. 2.在传参是先编码在传输,接受时先编码,在接收. string mm=Server.URLEncode(你); Res

JAVA导Excel到Mysql传参中文乱码

问题描述 问题是这样:我把Excel里面一列中文查找出来放在数组里面,然后遍历数组,去数据库中查其对应的字典值SQL语句:SELECTT.NID,T.NAMEFROMTRADE_DIC_TYPETWHERET.NAMELIKE?然后ps.setString(Arr.get[i]);//Arr.get[i]是中文然后再后台打印出来的sql语句里面"?"部分是乱码请问这个怎么解决? 解决方案 解决方案二:ps.setString(Arr.get[i]);这句应该是ps.setString(

【技术贴】解决前台js传参中文乱码

    方法1: 前台两次编码,后台一次解码.因为getParamet已经自动解了一次了. JavaScript: window.self.location="list.jsp?searchtext="+encodeURIComponent(encodeURIComponent(seartext));   java: searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");     方法2: 另外还有一种方

ssm-MultipartFile 图片上传后中文乱码

问题描述 MultipartFile 图片上传后中文乱码 String filename = myfile.getOriginalFilename(); 原本文件名称:单身汪.jpg 获取:???è???±?.jpg 解决方案 form上传的?post请求?控制台输出编码集不一致?打个断点,看看是在怎么时候乱码的! 解决方案二: String filename = new String(myfile.getOriginalFilename().getBytes(),"编码名称");

关于jsp-servlet实现文件上传的中文乱码问题

问题描述 关于jsp-servlet实现文件上传的中文乱码问题 servlet控制台打印出的文本中文显示的是问号,jsp页面,以及上传的文件都可以正常显示中文.请问怎么回事?项目编码,单个文件编码都设置成了utf-8,我单独写一个非servlet的java小程序控制台是可以显示中文的. 解决方案 这个也需要设置编码的,,,, 解决方案二: 用的websphere做服务器,这个需要设置编码吗? 解决方案三: 你控制台打印的文本是从哪里取来的,如果是从客户端获取来的请求参数的话,而又没有进行编码处理

编码-Android httppost 上传文件 中文乱码

问题描述 Android httppost 上传文件 中文乱码 利用CustomMultipartEntity附加的内容: 按照网上的指示,为httppost设置编码,new FileBody时转码,统统不好使! 真心求助!! 核心代码如下: @Override protected String doInBackground(String... params) { String serverResponse = null; HttpClient httpClient = new DefaultH

常见php与mysql中文乱码问题解决办法_Mysql

乱码问题1:用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号. 症状:用PHPmyAdmin输入汉字正常,但当PHP网页显示MySQL数据时汉字就变成了?号,并且有多少个汉字就有多少个?号. 原因:没有在PHP网页中用代码告诉MySQL该以什么字符集输出汉字. 解决方法: 1.网页文件head设置编码<meta http-equiv="Content-Type" content="text/html; cha

常见的导致mysql中文乱码问题

以前写过一篇有关如何处理mysql中文乱码的问题结果发现还是有必要再写这一篇. 原因是很多时候为了安全不允许mysql管理工具连接线上的正式环境这样的情况下就不能依靠mysql管理工具来转换编码来解决中文乱码的问题. 这样的情况下只能通过putty或者secureCRT远程连接mysql server然后通过mysql命令界面来对mysql数据库导出再做其他的编码转换操作.我现在面临的环境就是这样. 现在描述一下我的数据情况我需要导出中文乱码的数据表account.user  代码如下 复制代码