Ajax IE charset问题
来源:互联网 发布:红衣主教 知乎 编辑:程序博客网 时间:2024/05/16 10:40
转自:http://coolshell.cn/articles/8170.html#more-8170
用jQuery的Ajax方法从后端载入一段HTML代码然后动态插入到网页的Div元件中。这个东西太普遍了。jQuery强大的load方法可以完成这个事情。朋友的代码是这么写的:
var tab = jQuery(“#dynamic_tab”);
var url = “/list_ajax/”;
tab.load(url);
简单到不能再简单了。在Chrome,Firefox,Safari下运行一点问题也没有,只有IE不行,不管是IE7,IE8,还是IE9。问题的症壮是,使用IE访问那个Ajax的链接,没有问题,但是在jQuery的Ajax方法返回了“undefined”的respons对象。没有任何报错!
然后上Google查,又看到有人说的IE缓存的问题,什么,要把cache设置成false,或是用下面的方法来解决:
var tab = jQuery(“#dynamic_tab”);
var fuckie = Math.random();
var url = “/list_ajax/”+”?fuckie=”+fuckie;
tab.load(url);
用IE9的网页调试器可以看到点了Ajax的链接后,IE对网站有http的Ajax请求,也可以看到请求返回了,但是就是不显示在我的页面上——jQuery的Ajax的responseText为undefined!
于是,我只得架起原生态的Ajax,看看IE的那个Ajax的ActiveX的对象干了什么事?写了下面的代码(当年写Ajax就是这么写的,所以也不费劲,况且网上还有例程可以抄):
function InitAjax()
{
var ajax=false;
try {
ajax = new ActiveXObject(“Msxml2.XMLHTTP”);
} catch (e) {
try {
ajax = new ActiveXObject(“Microsoft.XMLHTTP”);
} catch (E) {
ajax = false;
}
}
if (!ajax && typeof XMLHttpRequest!=’undefined’) {
ajax = new XMLHttpRequest();
}
return ajax;
}
var ajax = InitAjax();
ajax.open(“GET”, url, true);
ajax.onreadystatechange = function() {
if (ajax.readyState == 4 && ajax.status == 200) {
var show = document.getElementById(“HaoChenDIV”).value;
show.innerHTML = ajax.responseText;
}
}
ajax.send(null);
一运行,还是不行,没见IE报什么错,不过,可以确定这不是jQuery的问题了,估计还是我们自己程序的问题。不过此时的程序太好调试了,调试中,在IE9下调式发现原生的IE的Ajax对象在onreadystatechange函数里,其responseText是下面这个样子:
什么是“系统错误: -1072896658”?上google一查,一堆页面,基本上是说乱码了,也就是ajax的后端程序返回的网页编码不认识吧。需要在返回的http header里加上 charset=utf-8。
于是,修改后端的Ajax的程序,明确指定了返回的HTTP Header中的charset,于是IE下就工作正常了,再切回jQuery的load代码,一切正常了(后端的程序本来是utf-8的编码格式,但是不骨明确在HTTP Header中指定,但是只有IE不会自动检测)。
这个问题的原因就是因为我们没有按照规范去写网页。所以,举一反三,HTML的规范还有哪些,太多了,记也记不住。但也许你会知道有一个叫 http://validator.w3.org 的网站可以帮你校验你网页中的很多不规范的东西。这个工具会报很多很多错,很多都有点吹毛求疵,
- Ajax IE charset问题
- ajax 乱码问题 以及Response.charset="GB2312"
- 两个问题:ie+ajax 和 ie+getElementsbyname
- IE 8 ajax无效问题
- AJAX缓存问题的解决方法(IE)
- Ajax中IE浏览器中的缓存问题
- jquery AJAX清除IE缓存问题
- jquery AJAX清除IE缓存问题
- IE下Ajax缓存问题的解决办法
- ie ajax responseText 为null的问题
- Ajax 在IE浏览器中的缓存问题
- IE下ajax操作的问题
- ie下ajax同步执行的问题
- ie下使用ajax缓存问题
- 关于IE下AJAX的问题
- IE下的AJAX缓存问题
- ie发送ajax问题,get请求
- IE下ajax请求的缓存问题
- Ubantu 14.04 安装 jdk 1.7
- Activity中的四种启动模式
- DuiVision开发教程(2)-如何写一个简单的界面程序
- Android/iOS_Fiddler 实现手机的抓包(2)
- 北京住宿费发票 QQ;147107880 电话;13751037070
- Ajax IE charset问题
- c#在新线程创建窗体卡住问题
- popupWindow的创建和与alertDialog的区别
- Java抽象类与接口的区别
- AngularJS__绑定变量HTML文本的显示
- 济 南 建 筑 材 料 发 票 Q Q 1 4 7 1 0 7 8 8 0 电 话 1 3 7 5 1 0 3 7 0 7 0
- 高效判断是不是鼠标双击或者是多击的原理分析
- 百度地图之路径规划
- java 异常