Jquery Ajax, funktioniert nicht im Internet Explorer

Ich versuche jQuery ajax zu machen und es funktioniert in Firfox und Chrome, aber nicht in Internet Explorer 9.

Der endgültige Code muss über Sub-Domains gehen, und dies funktioniert nicht mit dem Standardtransport.

Daher versuche ich, einen benutzerdefinierten Transport für den Internet Explorer zu erstellen

Methode 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();
            }
        };
    }
});

Ich habe eine einfache Beispielseite erstellt, um die erste Technik hier zu demonstrieren:http://services.whygo.net/sendAjax.htm

Bitte beachten Sie, dass der normale Transport fehlschlägt, wenn Sie den benutzerdefinierten Transport verwenden, es sei denn, Sie aktualisieren

Die Idee kommt von hier:http://forum.jquery.com/topic/cross-domain-ajax-and-ie#14737000002203097

Dies gibt keine andere Fehlermeldung als 'error' innerhalb der 'error'-Methode, die bei $ ajax aufgerufen wird, wenn dies fehlschlägt. Ich erhalte eine 405-Methode, die auf der Registerkarte "Netzwerk" von if dev tools nicht zulässig ist, aber das serverseitige Material wird ausgeführt.

Methode 2 Ich habe auch eine andere Methode ausprobiert, wie hier beschrieben:Subdomänenübergreifendes AJAX funktioniert in Chrome, nicht im IE

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

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

Dies kann hier gefunden werden:http://www.whygo.net/sendAjax2.html

In diesem Fall erhalte ich 200 Codes auf der Registerkarte "Netzwerk" der Entwicklungswerkzeuge, nenne aber nicht "Fehler" oder "Erfolg" von $ ajax.

Wenn ich dieses zweite Mal eine Zeitüberschreitung einsetze, kehrt es mit der Meldung "Zeitüberschreitung" zur Funktion "Fehler" zurück.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage