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

Javascript 这个简短的XMLHttpRequest声明有什么问题吗?,javascript,ajax,xmlhttprequest,activexobject,Javascript,Ajax,Xmlhttprequest,Activexobject,在我所签出的所有AJAX库中,XMLHttpRequest都包含一个带有测试或try/catch语句的冗长声明 我需要通过SOAP GET请求检索XML,并在IE7+、Firefox和Chrome中成功测试了以下声明: var xhr=new XMLHttpRequest()||new ActiveXObject("Microsoft.XMLHTTP"); 我错过了什么?我是否忽略了一些我的声明即将破裂的边缘案例 编辑 因此,声明的第二部分从未运行过。这是否意味着对于IE7+/Firefox/

在我所签出的所有AJAX库中,XMLHttpRequest都包含一个带有测试或try/catch语句的冗长声明

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

var xhr=new XMLHttpRequest()||new ActiveXObject("Microsoft.XMLHTTP");
我错过了什么?我是否忽略了一些我的声明即将破裂的边缘案例

编辑

因此,声明的第二部分从未运行过。这是否意味着对于IE7+/Firefox/Chrome,我只需要:

var xhr=new XMLHttpRequest();

new
具有precedence,因此您正在执行
newxmlhttprequest()
并检查返回值。但是,如果未定义
XMLHttpRequest
,则此执行已抛出错误。相反,您希望在应用
new
之前检查是否定义了
XMLHttpRequest
,例如:

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

您将错过低于7的Internet Explorer版本的案例:

new ActiveXObject("MSXML2.XMLHTTP");

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

是否都在
try{…}
块中?呃…不。IE7+、Firefox和Chrome显然接受了这一点。正如在这里的第一个答案中所显示的,这些冗长的声明中的大多数都有很好的理由。我只想使用YUI、jQuery或您最喜欢的JavaScript/AJAX库,然后就可以使用它了。为什么要再次解决这个问题?:-)事实证明,我正在试图解决jQuery似乎没有解决的一个问题:我同意PointedEars在这个问题上的方向:XMLHttpRequest应该只用作传输机制,而一个单独的层用于XML树的导航。几年前,我创建了自己的“XPathExpression”库,它就是这样做的——提供了处理所有XPath表达式(我发现的)的基本XPath方法——只需要大约90行代码就可以处理特定于浏览器的差异——包括使用XML名称空间。我会看看我是否能得到最新的代码,并作为您其他问题的答案。谢谢pimvdb!我已经更新了我的问题,似乎XMLHttpRequest对我来说已经足够了。@Christophe:你说的第二部分(在
|
之后)没有添加任何内容是正确的
new
总是返回一个对象,它永远不会出错。在我看来,返回false会更有用。。。无论如何,谢谢你的回答。