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 时间比较实现代码
Oct 28 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
Apr 02 Javascript
JavaScript中最简洁的编码html字符串的方法
Oct 11 Javascript
基于jQuery仿淘宝产品图片放大镜特效
Oct 19 Javascript
轻松实现js选项卡切换效果
Sep 24 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
详解数组Array.sort()排序的方法
May 09 Javascript
利用jqprint插件打印页面内容的实现方法
Jan 09 Javascript
p5.js入门教程之键盘交互
Mar 19 Javascript
vue+axios实现文件下载及vue中使用axios的实例
Sep 21 Javascript
bootstrap table合并行数据并居中对齐效果
Oct 17 Javascript
OpenLayers3实现测量功能
Sep 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+javascript的日历控件
2009/11/19 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
jsTree使用记录实例
2016/12/01 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
轻松掌握python设计模式之访问者模式
2016/11/18 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
详解Python中import机制
2020/09/11 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
茶叶生产计划书
2014/01/10 职场文书
怎么写好自荐书
2014/03/02 职场文书
感恩教师节主题班会
2015/08/12 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
django注册用邮箱发送验证码的实现
2021/04/18 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript