zoukankan      html  css  js  c++  java
  • 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里面取值   
        }   
      });
    }
  • 相关阅读:
    MVVM框架-MVVMLight
    WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)
    WPF使用转换器(Converter)
    WPF绑定功能常用属性介绍
    WPF绑定属性
    Java工作笔记:工作中使用JNA调用C++库的一些细节(转载)
    关于使用sudo命令后找不到JAVA_HOME的问题
    IDEA入门级使用教程
    dubbo协议参考手册(转)
    Javascript 基础夯实 —— 使用 webWorker 实现多线程(转)
  • 原文地址:https://www.cnblogs.com/canrz/p/3623065.html
Copyright © 2011-2022 走看看