Warum funktioniert das jQuery-Ajax-call nicht NUR im IE9 (Noch funktioniert im IE8 und IE7)

Habe ich eine website, wo ich eine ajax-Aufruf wie dieser:

            //perform an ajax request to generate a new subscriber account
            jQuery.ajax({
                type: 'POST',
                url: '/index.php?option=com_content&view=article&id=45&tmpl=component',
                data: postVars,
                success: handleResponse,
                error: function(jqXHR, textStatus, errorThrown) {
                    alert ('response: ' + jqXHR.responseText);
                    alert ('code: ' + jqXHR.getResponseHeader('X-Subscriber-Status'));
                }
            });

Die Seite angefordert wird, die nichts tut, aber die Rückkehr einer einzigen Ziffer status-code, und es funktioniert mit jedem browser, außer dem IE9. Das Skript gehostet wird, die auf der gleichen Domäne wie die Seite, die es anfordert, so sollte es keine Problem mit cross-domain-scripting.

Habe ich endlich aufgespürt, was passiert, aber ich weiß nicht, wie es zu lösen ist. Es stellt sich heraus, dass der Ajax-request erfolgreich abgeschlossen ohne Probleme. Ich habe überprüft dies mithilfe von Fiddler suchen, die den Datenverkehr im Netzwerk. Der server antwortet auf die Anfrage mit einem HTTP-status-code-200 und der Körper ist nicht alles enthalten, aber eine einzelne Ziffer response-code. An dieser Stelle jQuery führt den Fehler-handler, NICHT den Erfolg-handler wie erwartet werden würde (im IE9). Warum macht er das und wie kann ich es verhindern?? Dies geschieht NUR im IE9. Selbst IE8 und IE7 funktioniert das gut mit der exakt gleichen code! Wie Sie sehen können, dass ich endlich gegriffen, um die Erkennung von IE9 und mit einem XmlHttpRequest-Objekt, um es zu tun (das funktioniert übrigens).

Wie es scheint, ein jQuery bug zu mir, aber ich kann nicht finden jede Erwähnung der es in meine Suche. Bin ich wirklich der einzige, der das erleben dieses sonderbare Verhalten?

Sie haben Logik läuft in einer anderen Funktion für den IE9. Was bedeutet doIe9Request() Aussehen? Das ist die eine, die erroring.
Ja, der Ajax-request nicht scheitern. Es ist einfach nicht exectued im IE9.
Die separate Logik wurde Hinzugefügt, nachdem die Tatsache zu, das problem zu beheben. Ich habe geändert, die original-Beitrag widerspiegeln, den code habe ich mit dem begonnen, scheitert im IE9 aber kein anderer Browser.
Haben Sie ein Unicode Byte Order Mark am Anfang der index.php Datei zufällig?

InformationsquelleAutor rushinge | 2011-08-02

Schreibe einen Kommentar