• 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 : "正在对预约时间进行合法性校验,请稍候..."
      });

      

    $("#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("服务器没有返回数据,可能服务器忙,请重试");
          }
         });
       }
      });

  • 相关阅读:
    201771010128王玉兰《面向对象程序设计(Java)》第十三周学习总结
    201771010128王玉兰《面向对象程序设计(Java)》第十二周学习总结
    王玉兰201771010128《面向对象与程序设计(Java)》第十一周学习总结
    201771010128王玉兰《面向对象程序设计(Java)》第十周学习总结
    王玉兰201771010128《面象对象程序设计(Java)》第九周学习总结
    201771010128王玉兰《面向对象程序设计(Java)》第八周学习总结
    AI核心代码解题思路
    《2018面向对象程序设计(java)课程学习进度条》
    解决结束进程explorer.exe后出现蓝屏的办法
    201771010123-汪慧和 实验四 软件项目案例分析
  • 原文地址:https://www.cnblogs.com/yeye518/p/2231609.html
Copyright © 2020-2023  润新知