jQuery 发请求传输中文传参乱码问题怎么解决? 下面本篇文章给大家介绍一下 jQuery 发请求传输中文参数乱码问题的解决方案. 有一定的参考价值, 有需要的朋友可以参考一下, 希望对大家有所帮助.
jQuery 发请求传输中文参数乱码问题的解决方案
最近在做的需求, 涉及到级联查询, 需要根据上级下拉框的内容, 查询出下级下拉框列表, 因为级联只有两级, 且后期对表中的数据几乎不会改动, 所以我设计的表存的直接是中文.
菜单如下:
代码如下:
- var url = "${basePath}/institutionConfig/getDepartmentByCenter.do?param=" + center;
- $.get(url, function (data) {
- var list = data.data;
- for (var i = 0; i <list.length; i++) {
- departmentSelector += "<option value='" + list[i] + "' ";
- if (department && list[i] == department) {
- departmentSelector += "selected='selected'";
- }
- departmentSelector += ">" + list[i] + "</option>";
- }
- $("#accountDepartmentAdd").html(departmentSelector);
- });
我用的是 $.get(url, callback) 向后台发送请求的, 由于将参数直接以 GET 方式发送, 所以浏览器对参数用 URL 编码进行了 encode, 而后台获取到的参数为:
可以看到, param 接收到的是乱码. 所以我进行了进一步的处理, 即转码:
String center = new String(param.getBytes("iso8859-1"), "utf-8");
这样接收到的就是中文了.
但是这样的做法在测试环境竟然报错了, 分析了下原因, 发现测试环境接收到的就是正确的中文, 转码后反而错了. 所以, 解决方案应该是改页面的请求. 因为使用了 GET 方式导致的参数被编码了, 所以改为 POST 请求, POST 请求会提交原始数据:
- var url = "${basePath}/institutionConfig/getDepartmentByCenter.do";
- $.Ajax({
- url: url,
- data: {"param": center},
- dataType: "json",
- type: "POST",
- success: function (data) {
- var list = data.data;
- for (var i = 0; i <list.length; i++) {
- departmentSelector += "<option value='" + list[i] + "' ";
- if (department && list[i] == department) {
- departmentSelector += "selected='selected'";
- }
- departmentSelector += ">" + list[i] + "</option>";
- }
- $("#accountDepartmentAdd").HTML(departmentSelector);
- }
- });
更多前端开发 https://www.html.cn/ 知识, 请查阅 HTML 中文网 !!
来源: http://www.css88.com/qa/jquery/17143.html