最近在做的需求, 涉及到级联查询, 需要根据上级下拉框的内容, 查询出下级下拉框列表, 因为级联只有两级, 且后期对表中的数据几乎不会改动, 所以我设计的表存的直接是中文.
菜单如下:
代码如下:
- 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);
- }
- });
总结
以上所述是小编给大家介绍的 jQuery 发请求传输中文参数乱码问题的解决方案, 希望对大家有所帮助, 如果大家有任何疑问请给我留言, 小编会及时回复大家的. 在此也非常感谢大家对脚本之家网站的支持!
来源: http://www.jb51.net/article/140627.htm