javascript – 不使用原生XMLHttpRequest的原因 – 为什么$.ajax是强制性的?

我正在写一个应用程序:

>绝对依赖于通过Javascript向服务器发送数据
>不得在代码中包含JQuery库.

(我不知道我的代码是否会包含在已经有jquery lib的网页中,我不知道是否会有正确的版本,我不知道是否会有JQuery冲突等等……)

我必须继续本机JS功能XMLHttpRequest(旧IE的ActiveX)方法,这很简单,但我看到警告:

“Without jQuery,AJAX coding can be a bit tricky!

Writing regular AJAX code can be a bit tricky,because different
browsers have different Syntax for AJAX implementation. This means
that you will have to write extra code to test for different browsers.
However,the jQuery team has taken care of this for us,so that we can
write AJAX functionality with only one single line of code.”

什么是“棘手”的?我怎么可能做错了?我所知道的

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+,Firefox,Chrome,Opera,Safari
  xmlhttp = new XMLHttpRequest();
  }
else
  {// code for IE6,IE5
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

只是不同浏览器的额外代码,我的xmlhttp var应该从现在开始准备在IE5,IE6,IE7,Safari中完成工作.

是否应该进行跨浏览器代码调整,或者在使用本机XMLHttpRequest对象时还有什么我应该注意的吗?

解决方法

除非你需要支持真正的旧IE(显然使用不同的ActiveXObject),否则这是跨浏览器支持所必需的.

但是,使用例如jQuery提供了许多额外的优点:

>单一函数调用,没有不必要的变量使您的范围变得混乱.
>将对象自动序列化为GET / POST参数.为什么手动(需要正确编码值!),只需传递一个对象?
>自动解析响应,例如在JSON的情况下,您获得一个对象,而不仅仅是您需要手动解析的字符串.
>常见事件的好回调(成功/失败/完成)
>可插拔架构,以支持例如IE中的CORS XDomainRequest.

因为你提到你不能使用jQuery,因为你的应用程序将嵌入到可能与之冲突的另一个站点中:你可以通过包含jQuery然后使用$.noConflict(true)来恢复旧的$和jQuery变量来避免这种情况.要在代码中使用它,然后像这样写:

(function($) {

})(jQuery.noConflict(true));

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...