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 相关文章推荐
[原创]图片分页查看
Aug 28 Javascript
javascript 实现父窗口引用弹出窗口的值的脚本
Aug 07 Javascript
js变量以及其作用域详解
Jul 18 Javascript
js call方法详细介绍(js 的继承)
Nov 18 Javascript
ie7+背景透明文字不透明超级简单的实现方法
Jan 17 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
Apr 06 Javascript
jquery如何把数组变为字符串传到服务端并处理
Apr 30 Javascript
js+css实现导航效果实例
Feb 10 Javascript
wap手机端解决返回上一页的js实例
Dec 08 Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 Javascript
2分钟实现一个Vue实时直播系统的示例代码
Jun 05 Javascript
vue-simple-uploader上传成功之后的response获取代码
Sep 07 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版)
2012/08/21 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
Python秒算24点实现及原理详解
2019/07/29 Python
Python+Redis实现布隆过滤器
2019/12/08 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
html5 标签
2009/07/16 HTML / CSS
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
公司总经理岗位职责
2014/03/15 职场文书
销售经理竞聘书
2014/03/31 职场文书
个人借款担保书
2014/04/02 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
研究生导师评语
2014/12/31 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
详解python字符串驻留技术
2021/05/21 Python
Java中使用Filter过滤器的方法
2021/06/28 Java/Android