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 相关文章推荐
Javascript 解疑
Nov 11 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
Dec 12 Javascript
点击显示指定元素隐藏其他同辈元素的方法
Feb 19 Javascript
JavaScript中的apply和call函数详解
Jul 20 Javascript
jquery实现表格本地排序的方法
Mar 11 Javascript
星期几的不同脚本写法(推荐)
Jun 01 Javascript
AngularJS 依赖注入详解及示例代码
Aug 17 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
Apr 22 Javascript
Node.js中多进程模块Cluster的介绍与使用
May 27 Javascript
webpack 样式加载的实现原理
Jun 12 Javascript
layui 富文本赋值,取值,取纯文本值的实例
Sep 18 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
Aug 20 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 cout<<的一点看法
2010/01/24 PHP
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
JQuery里选择超链接的实现代码
2011/05/22 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
深入理解Python中各种方法的运作原理
2015/06/15 Python
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
python flask搭建web应用教程
2019/11/19 Python
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
一道写SQL的面试题和答案
2013/11/19 面试题
.NET概念性的面试题
2012/02/29 面试题
写给老婆的检讨书
2014/02/21 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
小学家长通知书评语
2014/12/31 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
详解Python常用的魔法方法
2021/06/03 Python
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android