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 相关文章推荐
ExtJS 下拉多选框lovcombo
May 19 Javascript
网站接入QQ登录的两种方法
Jul 22 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
Aug 31 Javascript
js获取元素的外链样式的简单实现方法
Jun 06 Javascript
JS实现星星评分功能实例代码(两种方法)
Jun 09 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
Dec 08 Javascript
js实现文本上下来回滚动
Feb 03 Javascript
AngularJS 实现购物车全选反选功能
Oct 24 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
Nov 21 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
Nov 28 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
May 14 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
May 30 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
利用static实现表格的颜色隔行显示
2006/10/09 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
js初始化验证实例详解
2016/11/26 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
Django接受前端数据的几种方法总结
2016/11/04 Python
flask中过滤器的使用详解
2018/08/01 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
python ETL工具 pyetl
2020/06/07 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
简历里的自我评价范文
2014/02/24 职场文书
入党积极分子评语
2014/05/04 职场文书
大气污染防治方案
2014/05/19 职场文书
安全目标管理责任书
2014/07/25 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server