Jquery Ajax, nie działa w Internet Explorerze

Próbuję zrobić trochę jQuery ajax i działa w Firfox i Chrome, ale nie w Internet Explorer 9.

Ostateczny kod będzie musiał przechodzić przez subdomeny, co nie działa w przypadku domyślnego transportu.

Próbuję więc utworzyć niestandardowy transport do użycia w programie Internet Explorer

Metoda 1

$.ajaxTransport("+*", function (options, originalOptions, jqXHR) {
    if (jQuery.browser.msie && window.XDomainRequest) {
        var xdr;
        return {
            send: function (headers, completeCallback) {
                // Use Microsoft XDR
                xdr = new XDomainRequest();
                xdr.open("get", options.url);
                xdr.onload = function () {
                    if (this.contentType.match(/\/xml/)) {
                        var dom = new ActiveXObject("Microsoft.XMLDOM");
                        dom.async = false;
                        dom.loadXML(this.responseText);
                        completeCallback(200, "success", [dom]);
                    } else {
                        completeCallback(200, "success", [this.responseText]);
                    }
                };
                xdr.ontimeout = function () {
                    completeCallback(408, "error", ["The request timed out."]);
                };
                xdr.onerror = function () {
                    completeCallback(404, "error", ["The requested resource could not be found."]);
                };
                xdr.send();
            },
            abort: function () {
                if (xdr) xdr.abort();
            }
        };
    }
});

Stworzyłem prostą przykładową stronę, aby zademonstrować tutaj pierwszą technikę:http://services.whygo.net/sendAjax.htm

Pamiętaj, że jeśli używasz niestandardowego transportu, normalny transport zakończy się niepowodzeniem, chyba że odświeżysz

Pomysł pochodzi stąd:http://forum.jquery.com/topic/cross-domain-ajax-and-ie#14737000002203097

To nie daje komunikatu o błędzie innego niż 'error' w metodzie 'error' wywołanej $ ajax, gdy zawodzi. Dostaję niedozwoloną metodę 405 na karcie „Sieć” narzędzi if dev, ale rzeczy po stronie serwera nie działają.

Metoda 2 Wypróbowałem również inną metodę opisaną tutaj:Cross-subdomena AJAX działa w Chrome, a nie w IE

if ('XDomainRequest' in window && window.XDomainRequest !== null) {

    // override default jQuery transport
    jQuery.ajaxSettings.xhr = function() {
        try { return new XDomainRequest(); }
        catch(e) { }
     };
}

Można to znaleźć tutaj:http://www.whygo.net/sendAjax2.html

Na tym naprawdę otrzymuję 200 kodów na karcie „sieć” np. Narzędzi dev, ale nie nazywa się „błędu” ani „sukcesu” parametru $ ajax.

Jeśli ustawię limit czasu na ten drugi, to powróci on do funkcji „błędu” z komunikatem „timeout”.

questionAnswers(2)

yourAnswerToTheQuestion