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 相关文章推荐
IE与Firefox在JavaScript上的7个不同写法小结
Sep 14 Javascript
Javascript面向对象设计一 工厂模式
Dec 20 Javascript
node.js WEB开发中图片验证码的实现方法
Jun 03 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
Apr 20 Javascript
bootstrap轮播图示例代码分享
May 17 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
JavaScript实现滑动导航栏效果
Aug 30 Javascript
原生JS获取元素的位置与尺寸实现方法
Oct 18 Javascript
Vue-component全局注册实例
Sep 06 Javascript
微信小程序实现传递多个参数与事件处理
Aug 12 Javascript
node.js基础知识汇总
Aug 25 Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 17 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文档更新介绍
2011/07/22 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
类似框架的js代码
2006/11/09 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
用python代码做configure文件
2014/07/20 Python
Python控制多进程与多线程并发数总结
2016/10/26 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
日期和时间问题
2015/01/04 面试题
JSP&Servlet技术面试题
2015/05/21 面试题
销售顾问岗位职责
2014/02/25 职场文书
产品设计开发计划书
2014/05/07 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
2015年父亲节寄语
2015/03/23 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
nginx配置之并发频次限制
2022/04/18 Servers