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 相关文章推荐
将HTML自动转为JS代码
Jun 26 Javascript
JavaScript框架是什么?怎样才能叫做框架?
Jul 01 Javascript
JS时间特效最常用的三款
Aug 19 Javascript
Node.js操作Firebird数据库教程
Mar 04 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
May 18 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
Dec 26 Javascript
详解vue父子组件间传值(props)
Jun 29 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
Sep 13 Javascript
微信小程序自定义键盘 内部虚拟支付
Dec 20 Javascript
Vue 组件注册实例详解
Feb 23 Javascript
JS使用cookie保存用户登录信息操作示例
May 30 Javascript
ElementUI实现el-form表单重置功能按钮
Jul 21 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模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
PHP数组游标实现对数组的各种操作详解
2016/01/26 PHP
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
js的三种继承方式详解
2017/01/21 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
用js实现放大镜效果
2020/10/28 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
重命名批处理python脚本
2013/04/05 Python
python提示No module named images的解决方法
2014/09/29 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
python中使用while循环的实例
2019/08/05 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
公司财务自我评价分享
2013/12/17 职场文书
教学实验楼管理制度
2014/02/01 职场文书
环保倡议书500字
2014/05/15 职场文书
简历自荐信范文
2015/03/09 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python