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 相关文章推荐
用dom+xhtml+css制作的一个相册效果代码打包下载
Jan 24 Javascript
javascript 学习之旅 (2)
Feb 05 Javascript
JS 自定义函数缺省值的设置方法
May 05 Javascript
HTML5附件拖拽上传drop & google.gears实现代码
Apr 28 Javascript
JavaScript针对网页节点的增删改查用法实例
Feb 02 Javascript
jquery实现界面无刷新加载登陆注册
Jul 30 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
Aug 15 Javascript
React Native实现简单的登录功能(推荐)
Sep 19 Javascript
微信小程序实现折叠展开效果
Jul 19 Javascript
对于防止按钮重复点击的尝试详解
Apr 22 Javascript
JS浮点数运算结果不精确的Bug解决
Aug 01 Javascript
JS桶排序的简单理解与实现方法示例
Nov 25 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
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
8个PHP数组面试题
2015/06/23 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
企业授权委托书范本
2014/04/02 职场文书
销售活动策划方案
2014/08/26 职场文书
股东合作协议书
2014/09/12 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
文言文辞职信
2015/02/28 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
会议主持词开场白
2015/05/28 职场文书
拉贝日记观后感
2015/06/05 职场文书
学生病假条怎么写
2015/08/17 职场文书
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫