zoukankan      html  css  js  c++  java
  • 地址栏传参乱码解决方案一例

    先明确是地址栏传参、地址栏传参、地址栏传参、、、

    url = "admin/team/query?key="+value
    window.location.href = url

    这种

    首先,说下前端传来的地址栏参数,

            var initParam= $("#id").prev().children(".option-selected").data("value")
            //var initParam = $("#id").children('option:selected').text()
            //var initParam = $("#id").val()//三种获取页面数据的情况,根据自己页面的实际情况而定
            var encodeParam= encodeURI(encodeURI(initParam))
            var query = {
                "param" : initParam,
              "param2" : initParam2
            }
            url = "admin/team/query?query="+JSON.stringify(query)//这种要先转成json格式,后台再解析、封装成对象
            //url = "admin/team/query?query="+query//后台接收方式:1(Object query)以对象的形式接收地址栏传参,但后台封装不了,后台接收对象的值全为空;2(String query)以String字符串的形式,但这种请求接口时就直接报错,找不到接口
            window.location.href = url
            //window.location.href = encodeURI(encodeURI(url))

    其实,对于乱码字段,这里有两种处理方案

    1:仅对中文的字段进行 encodeURI(encodeURI(singleParam)) 处理,这样到后台,将jsonString转成对象后,单独将该字段拿出来,反编码,还原成原来的中文(适用于单个参数传递的情况)

    2:对整个地址栏参数进行 encodeURI(encodeURI(url)) 处理,这样后台接收到jsonString后,第一时间进行反编码,在封装成对象(适用于对象的情况),但是,但是,

    但是,如果想和ajax一样(用这种URL:url = "admin/team/query?query="+query),直接在后台也以对象的形式(接口入参:Object query)接收,后台是接收不到的,数据都是空;

    如果用(接口入参:String query)接收,直接报错,貌似传递过程中,不能直接将前端的对象转成String字符串,

    所以,在调用接口前,我们要提前在JS里面把对象进行序列化 ,即用JSON.stringify(queryObject) 处理,这样后台就可以以String的入参接收

    那么后台怎么进行反编码呢,也很简单:

    String chinaStr = URLDecoder.decode(paramJson, "utf8");//注意utf8,有的情况可能需要相应改

    paramJson可以是单个参数,也可以是序列化后的参数,只是到后台后需要做对应的处理即可

    感想备注:这里主要是要知道如何在前后端进行encode的编码和解码,其次要理解 JSON.stringify() 序列化的作用,

    最后,要知道 地址栏传参 和 ajax传参 ,mvc框架的参数的处理能力不同,ajax能自动帮我们处理对象类型的,而地址栏只能以String的形式传参

     
  • 相关阅读:
    hdu4549(费马小定理 + 快速幂)
    java 四种实现延迟加载的方法
    浅谈java缓存
    JavaWeb实现文件上传下载功能实例解析
    java分页之页面分页
    浅析Java开发模式—Model1、Model2和三层
    构建一个简单的基于MVC模式的JavaWeb
    Java中MVC详解以及优缺点总结
    Servlet
    通过JDBC进行简单的增删改查(以MySQL为例)
  • 原文地址:https://www.cnblogs.com/zz-3m23d-begining/p/8392412.html
Copyright © 2011-2022 走看看