JavaScript中的常见问题解决方法(乱码,IE缓存,代理)


Posted in Javascript onNovember 28, 2013

解决AJAX中文乱码常用的两种方法

1. 在客户端进行encodeURI(utf-8也可以不做,默认),在服务器端将iso-8859-1编码转为utf-8编码

2.在客户端进行两次encodeURI,在服务器端进行一次转换。

第2种方法能解决问题的原因:

进行两次转换后,在第一次getparameter方法中进行第一次解码,因为解出来的是英文(第一次encode之后的结果),所以不会出问题;第二次使用URLDecoder的decode方法,所以能正常解决这个问题。需要注意的是,在decode方法中需要指定解码格式为"utf-8"。很多中文平台使用的并不是utf-8(我猜应该是gb2312),所以decode的默认转换并不一定是utf-8。

之所以在客户端进行两次编码而在服务器只进行一次解码,我猜是Tomcat的缘故。Tomcat为了让程序员编程方便(get和post用一样的代码),所以会自动对post的编码进行解码,所以在服务器端就少了一次手写的解码语句。之所以还要再进行一次编码解码,是因为Tomcat自动解码的操作并不一定是按照我们希望的编码解的,但英文等字符无论在什么平台上解出的码都是一样的,因此可以让Tomcat自动解译出第一次编码后的结果,再手动来解译encodeURI一次的代码,就可以获得自己所需的格式。

补充:现在又观察了一下浏览器的行为,觉得不是Tomcat的缘故,因为在浏览器里的显示的是中文,而不是编码后的东西,对于这些个编码问题现在是一头雾水,希望知道这方面知识的朋友不吝赐教!

解决IE缓存的问题
    加一个时间戳,并且要检查?

解决代理问题
    要将?转为$

示例代码:

function verify() {
    //解决中文乱麻问题的方法1,页面端发出的数据作一次encodeURI,服务器段使用new String(old.getBytes("iso8859-1"),"UTF-8");
    //解决中文乱麻问题的方法2,页面端发出的数据作两次encodeURI,服务器段使用URLDecoder.decode(old,"UTF-8")
    var url = "AJAXServer?name=" + encodeURI(encodeURI($("#userName").val()));
    url = convertURL(url);
    $.get(url,null,function(data){
        $("#result").html(data);
});
}
//给url地址增加时间戳,骗过浏览器,不读取缓存
function convertURL(url) {
    //获取时间戳
    var timstamp = (new Date()).valueOf();
    //将时间戳信息拼接到url上
    //url = "AJAXServer"
    if (url.indexOf("?") >= 0) {
        url = url + "&t=" + timstamp;
    } else {
        url = url + "?t=" + timstamp;
    }
    return url;
}
Javascript 相关文章推荐
jQuery Ajax 全解析
Feb 08 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
Jan 15 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
Nov 14 Javascript
checkbox选中与未选中判断示例
Aug 04 Javascript
JQuery显示、隐藏div的几种方法简明总结
Apr 16 Javascript
利用JQuery写一个简单的异步分页插件
Mar 07 Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 Javascript
JavaScript、C# URL编码、解码总结
Jan 21 Javascript
Node.js中.pfx后缀文件的处理方法
Mar 10 Javascript
浅析bootstrap原理及优缺点
Mar 19 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
Jun 04 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
Jul 30 Javascript
原始XMLHttpRequest方法详情回顾
Nov 28 #Javascript
jQuery处理xml格式的返回数据(实例解析)
Nov 28 #Javascript
使用js写的一个简易的投票
Nov 27 #Javascript
juery框架写的弹窗效果适合新手
Nov 27 #Javascript
js使用数组判断提交数据是否存在相同数据
Nov 27 #Javascript
js每隔5分钟执行一次ajax请求的实现方法
Nov 27 #Javascript
js字符串截取函数substr substring slice使用对比
Nov 27 #Javascript
You might like
文件上传程序的全部源码
2006/10/09 PHP
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
JS实现设置ff与ie元素绝对位置的方法
2016/03/08 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
如何基于Python批量下载音乐
2019/11/11 Python
python plotly画柱状图代码实例
2019/12/13 Python
tornado+celery的简单使用详解
2019/12/21 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
django中cookiecutter的使用教程
2020/12/03 Python
.NET现在共支持多少种语言
2014/02/26 面试题
string = null 和string = ''的区别
2013/04/28 面试题
新闻专业个人自我评价
2013/09/21 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
永远是春天观后感
2015/06/12 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
Java 死锁解决方案
2022/05/11 Java/Android