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里面取值   
        }   
      });
    }
  • 相关阅读:
    MSSQL 基础知识001
    MSSQL 数据库性能优化
    MVC4 AspNet MVC下的Ajax / 使用微软提供的Ajax请求脚本 [jquery.unobtrusive-ajax.min.js]
    MVC4 AspNet MVC下的Ajax / 使用JQuery做相关的Ajax请求
    java8 list统计(求和、最大、最小、平均)
    ideaVim
    FastJson
    linux自定义快捷键
    使用自定义注解和策略模式去掉if-else
    责任链模式
  • 原文地址:https://www.cnblogs.com/canrz/p/3623065.html
Copyright © 2011-2022 走看看