Вызов Ajax: в чем разница между новым ActiveXObject (Msxml2.XMLHTTP) и новым ActiveXObject (Microsoft.XMLHTTP)?

Я надеюсь, что оба вызова объекта относятся к ActiveXObject. Но почему мы передаем два разных параметра для работы в IE. 1. Msxml2.XMLHTTP и 2. Microsoft.XMLHTTP.

Они оба одинаковые? Или они зависят от браузера (IE7 и IE8)?

Я использовал оба. У меня не было никаких исключений. Оба ищут меня одинаково. Я использую IE 8.


person User 1034    schedule 22.10.2010    source источник


Ответы (2)


Оба на самом деле устарели. Существуют различные версии почтенного объекта Microsoft MSXML ActiveX (я считаю, что последняя была версия 5.0 и поставлялась с некоторой версией Office). У версий есть незначительные различия в поведении и исправления ошибок, которые обычно не используются в сценариях AJAX. .

Начиная с IE7, Microsoft поддерживает стандартизированный объект «XmlHttpRequest», принятый в других современных браузерах. См. http://msdn.microsoft.com/en-us/library/ms537505%28VS.85%29.aspx. Вам определенно следует использовать это, поскольку IE7 теперь де-факто является наименьшим общим знаменателем. IE6 был объявлен мертвым большинством крупных организаций, поэтому нет причин поддерживать старые специфичные для Microsoft ActiveX ProgID.

И, конечно же, в наши дни очень мало причин для развертывания собственных вызовов AJAX, поскольку библиотеки, такие как jQuery и ASP.NET Ajax, делают это за вас, абстрагируя эти непонятные причуды браузера. Я настоятельно рекомендую изучить одну из этих библиотек.

Джордан Ригер

person Jordan Rieger    schedule 22.10.2010

jquery (по крайней мере, 1.4.2) имеет проблему с вызовом $ .ajax (). Это делает большую утечку памяти (как фонтан) кодом трагедии:

if ( window.ActiveXObject ) {
    jQuery.ajaxSettings.xhr = function() {
        if ( window.location.protocol !== "file:" ) {
            try {
                return new window.XMLHttpRequest();
            } catch(xhrError) {}
        }

        try {
            return new window.ActiveXObject("Microsoft.XMLHTTP");
        } catch(activeError) {}
    };
}

разрешающая способность:

if ( window.ActiveXObject ) {
    jQuery.ajaxSettings.xhr = function() {
        if ( window.location.protocol !== "file:" ) {
            if ( window.ActiveXObject ) {
                try {
                    return new window.ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
            try {
                return new window.XMLHttpRequest();
            } catch(xhrError) {}
        }

        try {
            return new window.ActiveXObject("Microsoft.XMLHTTP");
        } catch(activeError) {}
    };
}
person Rocky    schedule 10.06.2011
comment
Ваше разрешение не требует внутренней проверки ActiveXObject. Это всегда будет правдой. - person user169771; 11.03.2015
comment
вот как выполнить проверку ActiveXObject if('ActiveXObject' in window){return new ActiveXObject("Microsoft.XMLHTTP")} - person Sharif; 27.07.2017