这个简短的XMLHttpRequest声明有什么问题吗?

时间:2011-12-12 21:02:43

标签: javascript ajax xmlhttprequest activexobject

在我检查过的所有AJAX库中,XMLHttpRequest涉及一个带有tests或try / catch语句的冗长声明。

我需要通过SOAP GET请求检索XML,并且我在IE7 +,Firefox和Chrome中成功测试了以下声明:

var xhr=new XMLHttpRequest()||new ActiveXObject("Microsoft.XMLHTTP");

我在这里缺少什么?我是否忽略了我的宣言将会破裂的一些边缘案例?

修改

因此声明的第二部分永远不会运行。这是否意味着对于IE7 + / Firefox / Chrome我只需要:

var xhr=new XMLHttpRequest();

2 个答案:

答案 0 :(得分:3)

你会错过Internet Explorer版本低于7的情况:

new ActiveXObject("MSXML2.XMLHTTP");

我认为有一个函数createRequest(),例如你不必根据浏览器修改并返回好的对象,并且包含try / catch来处理错误将是一个更好的方法。< / p>

答案 1 :(得分:1)

new具有优先权,因此您正在执行new XMLHttpRequest()并检查返回值。但是,如果未定义XMLHttpRequest,则此执行已经引发错误。相反,您想在应用XMLHttpRequest之前检查new是否已定义,例如:

var xhr = typeof XMLHttpRequest === "undefined"
            ? new ActiveXObject("Microsoft.XMLHTTP")
            : new XMLHttpRequest; // you can leave out the parens with no arguments