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
文本框回车提交与禁止提交示例
Sep 27 Javascript
js判断是否为ie的方法小结
Jan 13 Javascript
jquery自定义下拉列表示例
Apr 25 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
Dec 29 Javascript
跟我学习javascript的异步脚本加载
Nov 20 Javascript
使用jQuery操作HTML的table表格的实例解析
Mar 13 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
Javascript实现跨域后台设置拦截的方法详解
Aug 04 Javascript
使用javascript做在线算法编程
May 25 Javascript
vue组件表单数据回显验证及提交的实例代码
Aug 30 Javascript
javascript事件监听与事件委托实例详解
Aug 16 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
php获取某个目录大小的代码
2008/09/10 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
告诉大家什么是JSON
2008/06/10 Javascript
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
python各类经纬度转换的实例代码
2019/08/08 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
python简单的三元一次方程求解实例
2020/04/02 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
python 获取字典键值对的实现
2020/11/12 Python
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
几道数据库的概念性面试题
2014/05/30 面试题
八年级音乐教学反思
2014/01/09 职场文书
数控个人求职信范文
2014/02/03 职场文书
幼儿教师培训感言
2014/03/08 职场文书
投资意向书范本
2014/04/01 职场文书
员工安全承诺书
2014/05/22 职场文书
大学生毕业求职信
2014/06/12 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
python 批量压缩图片的脚本
2021/06/02 Python
MySQL创建管理LIST分区
2022/04/13 MySQL