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 delete操作符应用实例
Jan 13 Javascript
基于jquery的loading 加载提示效果实现代码
Sep 01 Javascript
jQuery中replaceAll()方法用法实例
Jan 16 Javascript
JavaScript实现梯形乘法表的方法
Apr 25 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
Apr 26 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
Aug 25 Javascript
概述jQuery的元素筛选
Nov 23 Javascript
vue-router 路由基础的详解
Oct 17 Javascript
React Native AsyncStorage本地存储工具类
Oct 24 Javascript
layui原生表单验证的实例
Sep 09 Javascript
js实现双人五子棋小游戏
May 28 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
Nov 05 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
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
php 文件上传系统手记
2009/10/26 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
用javascript实现无刷新更新数据的详细步骤 asp
2006/12/26 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
js登录弹出层特效
2014/03/07 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
JS实现音乐钢琴特效
2020/01/06 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
python能做什么 python的含义
2019/10/12 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
python eventlet绿化和patch原理
2020/11/21 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
活动总结模板
2014/05/09 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
校运会广播稿
2015/08/19 职场文书
电工生产实习心得体会
2016/01/22 职场文书
全新239军机修复记
2022/04/05 无线电