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 相关文章推荐
jQuery UI AutoComplete 自动完成使用小记
Aug 21 Javascript
javscript对象原型的一些看法
Sep 19 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
Mar 20 Javascript
ECMAScript6快速入手攻略
Jul 18 Javascript
JS版微信6.0分享接口用法分析
Oct 13 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
Jan 19 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
Sep 25 Javascript
Vue 按键修饰符处理事件的方法
May 04 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
Jan 15 jQuery
JavaScript实现班级抽签小程序
May 19 Javascript
JavaScript函数柯里化
Nov 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 fsockopen解决办法 php实现多线程
2014/01/20 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
js完整倒计时代码分享
2016/09/18 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
Python入门之后再看点什么好?
2018/03/05 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
Python request中文乱码问题解决方案
2020/09/17 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
《盘古开天地》教学反思
2014/02/28 职场文书
小学语文业务学习材料
2014/06/02 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
领导班子整改措施
2014/10/24 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android