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 相关文章推荐
实例分析js和C#中使用正则表达式匹配a标签
Nov 26 Javascript
js实现图片轮播效果
Dec 19 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
May 07 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
Aug 24 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
canvas 实现中国象棋
Feb 17 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
Oct 15 Javascript
JavaScript调用模式与this关键字绑定的关系
Apr 21 Javascript
基于Vue实现可以拖拽的树形表格实例详解
Oct 18 Javascript
layui 对弹窗 form表单赋值的实现方法
Sep 04 Javascript
js 图片懒加载的实现
Oct 21 Javascript
JS实现百度搜索框
Feb 25 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
js同源策略详解
2015/05/21 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
2019/08/02 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
Python File readlines() 使用方法
2018/03/19 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
pandas 选择某几列的方法
2018/07/03 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
精选奢华:THE LIST
2019/09/05 全球购物
物流业务员岗位职责
2014/02/08 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
中学生检讨书1000字
2014/10/28 职场文书
药店营业员岗位职责
2015/04/14 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers