ie中用ajax提示未定义,Jquery在IE7下无法使用 $.ajax解决方法
通过查看源码发现
// Create the request object; Microsoft failed to properly
// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
// This function can be overriden by calling jQuery.ajaxSetup
xhr:function(){
return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
},
以下是这个jquery的源码的版本声明
/*
* jQuery JavaScript Library v1.3.2
* http://jquery.com/
*
* Copyright (c) 2009 John Resig
* Dual licensed under the MIT and GPL licenses.
* http://docs.jquery.com/License
*
* Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
* Revision: 6246
*/
通过一个html打印“window.ActiveXObject ”的结果可以知道IE6、IE7和IE8都是返回的true,
测试的html源码为(同一个目录下有一个名为index.jsp页面,内容无所谓。)
Insert title here
$(function (){
$.ajax({
url:"index.jsp",
success:function(){alert("success")},
error:function(){alert("error")}
});
//$("div").append("window.ActiveXObject:");
//$("div").append((window.ActiveXObject?"true":"false"));
//alert(typeof(new XMLHttpRequest()));
//alert(typeof(new ActiveXObject("Msxml2.XMLHTTP.4.0")));
//alert(typeof(new ActiveXObject("Msxml2.XMLHTTP")));
//alert(typeof(new ActiveXObject("Microsoft.XMLHTTP")));
});
情况一:
不修改源码,则IE6中可以弹出“success”的提示,而IE7却没有任何提示,连错误提示都没有。
情况二:
将源码中的
window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
修改为
window.ActiveXObject ? new XMLHttpRequest() : new XMLHttpRequest();
则IE7中是弹出“success”的提示,而IE6却提示js错误,详情大概为”XMLHttpRequest对象未定义“
两种情况下FireFox都可以正常提示“success”,版本是FireFox3.5.3,其他浏览器不知道。
由此可见IE7中需要使用new XMLHttpRequest()初始化ajax对象,IE6则使用new ActiveXObject("Microsoft.XMLHTTP")
但是jQuery源码中却没有对IE7的初始化方法进行兼容,而官网上的兼容说明是IE6+。
难道是我理解错误,还是其他的什么?希望大家给点意见,jQuery很好用,但是我不能要求客户必须用IE6,而放弃IE7啊!
最后多一句:
prototype最新版1.6.1也是同样的问题IE7下的Ajax.Request是没有作用的,需要将源码的1130行左右的
var Ajax = {
getTransport: function() {
return Try.these(
function() {return new XMLHttpRequest()},
function() {return new ActiveXObject('Msxml2.XMLHTTP')},
//function() {return new ActiveXObject('Msxml2.XMLHTTP.4.0')},
function() {return new ActiveXObject('Microsoft.XMLHTTP')}
) || false;
},
进行修改,注释的那个部分是需要添加的修改。
这样才可以在IE7下使用这个ajax请求方法。
可是大家粗略的看一下,这里面的ajax初始化是先使用new XMLHttpRequest()创建,那就是说,
如果我不修改的话IE7应该也是可以的。
注:最后这个多一句的IE7兼容办法是在网络上搜索到的
以上就是我今天研究的结果,弄的我很糊涂,到底这个IE6、IE7和IE8全面兼容的jQuery的到底怎么实现(不能影响FireFox等等哦)
如果结论是:
由此可见IE7中需要使用new XMLHttpRequest()初始化ajax对象,IE6则使用new ActiveXObject("Microsoft.XMLHTTP")
那么prototype中的又怎么解释?
我已经糊涂了,希望大家指点一二!
刚才又搜索了一下关于XMLHttpRequest的创建方法,最后将源码修改为
return window.XMLHttpRequest? new XMLHttpRequest() : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
则IE6\7\8和FF都可以运行了。
总算是解决了。
ie中用ajax提示未定义,Jquery在IE7下无法使用 $.ajax解决方法相关推荐
- 罗克韦尔AB PLC安装Studio5000提示未安装Microsoft .NET Framework 3.5的解决方法
罗克韦尔AB PLC安装Studio5000提示未安装Microsoft .NET Framework 3.5的解决方法 如下图所示,在安装Studio5000时,提示未安装Microsoft .NE ...
- c++ 已声明变量提示未定义
第一次崩溃的感受到vs2008是多么坑爹. 已声明变量,死活提示未定义. 心中一万匹草泥马往返奔腾了无数次 没办法,自己写个小demo,一个一个变量试. tnd,终于发现问题了. 就因为涉及到了str ...
- python调用js文件报错_python - selenium 运行网页中js脚本报错,提示未定义
问 题 问题1 selenium 运行网易中js脚本报错提示未定义 报错提示如下: driver.execute_script("javascript:amsInit(62800,30315 ...
- jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
博客分类: jquery-easyui jQueryAjax框架HTML 现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...
- Win10提示“您未连接到nvidia gpu的显示器”的解决方法
Win10提示"您未连接到nvidia gpu的显示器"的解决方法 参考文章: (1)Win10提示"您未连接到nvidia gpu的显示器"的解决方法 (2) ...
- php zip.so 编译出错,php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法...
本文实例讲述了php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法.分享给大家供大家参考.具体如下: ZipArchive是 ...
- Vs定义超大数组时,stack OverFlow的解决方法
定义超大数组时,stack OverFlow的解决方法,当然了这里的数组不仅仅是int,char,double等内置类型,还可以是其他的类,如CString,CButton,CMap等. stack ...
- ajax请求 拦截窗口,ajax请求成功后新开窗口window.open()被拦截解决方法
ajax请求成功后新开窗口window.open()被拦截解决方法 问题: 前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但 ...
- 虚拟机中被提示请不要在虚拟机中运行此程序 解决方法,“Themida Sorry, this application cannot run...
虚拟机中被提示"请不要在虚拟机中运行此程序" 解决方法. 英文提示:"Themida Sorry, this application cannot run under a ...
最新文章
- lnmp php编译参数,LAMP、LNMP环境编译参数查询
- 7-1 矩阵链相乘问题 (20 分)(思路+详解+题目解析) 动态规划做法
- Python map/reduce
- python中seed的用法_Python中的seed()方法怎么用
- C++ 为什么要引入异常处理机制
- open cv+C++错误及经验总结(十一)
- p2371bzoj2118 墨墨的等式
- 敏捷开发系列之旅 第四站(透明的Crystal水晶方法) .
- 计算机log是代表什么,Log是什么文件?Log文件可以删除吗?
- eclipse启动进入工作空间出现cound not restore workbench layout
- python 爬取 谷歌以及百度图片
- Android登录 之 Twitter登录
- 计算机硬件未来发展前景,计算机硬件的未来发展趋势
- 数学建模系列:历年优秀论文+入门+进阶+国赛+美赛+其他
- Android内存泄漏检测工具使用手册
- 企业微信对外收款使用指南
- python利用正则爬取内涵段子内容
- 精简70%、内存不到1G,可以装在显卡上的Win11来了
- java calendar 2月份_Calendar.MONTH 2月29号加一个月 问题
- 微博推送数据结构分析