421 Stimmen

JavaScript console.log verursacht den Fehler: "Synchroner XMLHttpRequest im Hauptthread ist veraltet..."

Ich habe Logs zur Konsole hinzugefügt, um den Status verschiedener Variablen zu überprüfen, ohne den Firefox-Debugger zu verwenden.

Jedoch erhalte ich an vielen Stellen, an denen ich ein console.log in meiner main.js Datei hinzufüge, anstelle meiner schönen kleinen handschriftlichen Nachrichten an mich selbst den folgenden Fehler:

Synchrone XMLHttpRequest im Hauptthread ist veraltet aufgrund seiner schädlichen Auswirkungen auf die Benutzererfahrung. Für weitere Hilfe http://xhr.spec.whatwg.org/

Welche Alternativen oder Wrappers für console.log kann ich in meinem Code verwenden, die diesen Fehler nicht verursachen werden?

Mache ich etwas falsch?

20voto

Sonu K Punkte 2602

Um diese Warnung zu vermeiden, verwenden Sie nicht:

async: false

in einem Ihrer $.ajax() Aufrufe. Dies ist das einzige Feature von XMLHttpRequest, das veraltet ist.

Der Standardwert ist

async: true

jQuery hat synchronen XMLHTTPRequest veraltet

13voto

dev101 Punkte 1313

@Webgr teilweise hat mir tatsächlich geholfen, diese Warnung im Konsolenprotokoll zu debuggen, schade, dass der andere Teil dieser Antwort so viele Daumen nach unten gebracht hat :(

Wie auch immer, hier ist, wie ich herausgefunden habe, was in meinem Fall die Ursache für diese Warnung war:

  1. Verwenden Sie den Chrome-Browser > Drücken Sie F12, um die Entwicklertools zu öffnen
  2. Öffnen Sie das Auszugsmenü (in Chrome 3 vertikale Punkte oben rechts)
  3. Unter Konsole > überprüfen Sie die Option Log XMLHttpRequests
  4. Reloaden Sie die Seite, die Ihnen den Fehler gemeldet hat, und beobachten Sie, was bei jedem Ajax-Aufruf im Konsolenprotokoll passiert.

In meinem Fall hat ein anderes Plugin nach jedem Ajax-Aufruf 2 .js-Bibliotheken geladen, die absolut nicht erforderlich waren. Das Deaktivieren des fehlerhaften Plugins hat die Warnung aus dem Protokoll entfernt. Ab diesem Punkt können Sie entweder versuchen, das Problem selbst zu beheben (z.B. die Laden der Skripte auf bestimmte Seiten oder Ereignisse beschränken - das ist viel zu spezifisch für eine Antwort hier) oder sich an den Entwickler des Drittanbieter-Plugins wenden, um es zu lösen.

Hoffentlich hilft das jemandem.

8voto

Yoweli Kachala Punkte 403

Ich habe mir die Antworten alle beeindruckend angesehen. Ich denke, er sollte den Code bereitstellen, der ihm Probleme bereitet. In dem untenstehenden Beispiel, wenn Sie ein Skript haben, um jquery in page.php zu verlinken, dann erhalten Sie diese Benachrichtigung.

$().ready(function () {
    $.ajax({url: "page.php",
        type: 'GET',
        success: function (result) {
        $("#page").html(result);
   }});
 });

7voto

Andris Punkte 1412

Ich erhalte eine solche Warnung in folgendem Fall:

1) file1, das enthält. Die Seite enthält Eingabefelder. Ich gebe einen Wert in das Eingabefeld ein und klicke auf die Schaltfläche. Jquery sendet die Eingabe an eine externe php-Datei.

2) Die externe php-Datei enthält auch jquery und in der externen php-Datei habe ich ebenfalls eingefügt. Deshalb habe ich die Warnung erhalten.

Habe aus der externen php-Datei entfernt und es funktioniert ohne Warnungen.

Wie ich verstehe, beim Laden der ersten Datei (file1) lade ich jquery-1.10.2.js und da die Seite nicht neu geladen wird (sie übermittelt Daten an die externe php-Datei mit jquery $.post), bleibt jquery-1.10.2.js erhalten. Es ist also nicht notwendig, es erneut zu laden.

6voto

Bagrat Zakaryan Punkte 317

Dies ist in meinem Fall gelöst.

JS

$.ajaxPrefilter(function( options, original_Options, jqXHR ) {
    options.async = true;
});

Diese Antwort wurde in diesen Link eingefügt

https://stackoverflow.com/questions/28322636/synchronous-xmlhttprequest-warning-and-script

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X