• ajax使用serialize()序列化提交


    form 表单使用.serialize()序列化后会出现中文乱码的问题
    原因
    .serialize()自动调用了encodeURIComponent方法将数据编码了 
    解决方法
    调用decodeURIComponent(XXX,true);将数据解码 
    例如: 
    var information=$("#inforForm").serialize(),
      informationDe= decodeURIComponent(information,true),  //解码
      informationEn= encodeURI(encodeURI(informationDe));   //再次编码

    后台

    String paramsTrans = new String(params.getBytes("ISO-8859-1"),"UTF-8");
    params = java.net.URLDecoder.decode(paramsTrans , "UTF-8");

    页面端发出的数据作两次encodeURI,这个做的好处在于,不管浏览器用户在页面来设置编码,服务器所采用的编码来做一次URLencode转换成UTF-8

    .serialize()值转化为json格式

    .serialize()序列化之后的传值是

      a=1&b=2&c=3

    这种样式,实际使用中还是json比较方便

    //转化为json
    function strToObj(str){   str
    = str.replace(/&/g,"','");   str = str.replace(/=/g,"':'");   str = "({'"+str +"'})";   obj = eval(str);   return obj; }

    ajax取值后自动赋值给span

    function inquireInfor(){
      var information=$("#inforForm").serialize(),
        //解码
        informationDe = decodeURIComponent(information,true),
        informationDeJson=strToObj(informationDe),
         inforSpan=$("#inforDiv span");
    
      var len = inforSpan.size();//获取span标签的个数
      var arr = [];
      var result=eval(informationDeJson);
      for(var index = 0; index < len-1; index++){//创建一个数字数组
        arr[index] = index;
      }
      $.each(arr, function(i){//循环得到不同的id的值
        var idValue = inforSpan.eq(i).attr("id");
        if(idValue != ''){      
          $('span'+'#'+idValue).html(result[idValue]);  //根据ID从传值的json里面取值   
        }   
      });
    }
  • 相关阅读:
    cmake vs qmake
    Flutter安装过程中遇到的问题
    外观模式(c++实现)
    原型模式(c++实现)
    我敢说 80% 的程序员都掉进了「老鼠赛跑」的陷阱
    装饰模式(c++实现)
    Kubernetes 部署 Nebula 图数据库集群
    应用 AddressSanitizer 发现程序内存错误
    前端 Docker 镜像体积优化
    图数据库设计实践 | 存储服务的负载均衡和数据迁移
  • 原文地址:https://www.cnblogs.com/canrz/p/3623065.html
Copyright © 2020-2023  润新知