NetworkError: „Senden“ auf „XMLHttpRequest“ konnte nicht ausgeführt werden

Lesezeit: 4 Minuten

Benutzeravatar von Moo33
Mu33

Ich versuche, eine POST-Ajax-Anfrage an einen Server zu senden, der lokal auf meinem Laptop gehostet wird, aber ich kann anscheinend keine Informationen zurückerhalten. Wenn ich auf meiner Website (localhost) auf eine Schaltfläche klicke, kann ich sehen, dass der Server die richtigen Informationen zurückgibt, aber am Frontend erhalte ich diesen Fehler:

error: NetworkError: Fehler beim Ausführen von „send“ auf „XMLHttpRequest“: Fehler beim Laden von „http://comp-ip‘.

var param = JSON.stringify({varA:"varA",varB:"varB"});

$.ajax({
  type: "POST", 
  url: "http://comp-ip",
  async: false, 
  data: param,
  success: function(result, status, xhr){
    alert(result + ": " + status);
  },
  error: function(xhr, status, err) {
    alert(status + ": " + err);
  }
});

Es scheint jedes Mal einen Fehler auszulösen und keinen “Erfolg”. Hat jemand eine Ahnung, was falsch ist?

Bearbeiten: Ich habe versucht, eine normale POST-Anfrage ohne AJAX zu senden, und es gibt mir auch einen “undefinierten” Fehler:

$(document).ready(function(){
    var param = JSON.stringify({varA:"varA",varB:"varB"});
     $("#btn").click(function(event){
           $.post( 
              "http://ip",
               param,
               function(data) {
                 $('#container').html(data);
               }
           ).fail(function(error) { alert(error.responseJSON) });
        });
});

Andere Dinge, die ich versucht habe: 1) Wechseln Sie den Browser zu Safari (das Gleiche, der Server gibt Informationen zurück, aber die Site erhält einen Fehler) 2) Setzen Sie async = true von false. Aus irgendeinem Grund antwortet der Server überhaupt nicht, wenn ich es auf true setze. Wenn es falsch ist, antwortet der Server.

  • Ich habe eine Stunde damit verbracht, mich mit dem Problem zu befassen, während das Problem darin bestand, dass mein AdBlocker die Anfragen blockierte …

    – Alex Semenjuk

    25. September 2019 um 8:19 Uhr

Benutzeravatar von rassa45
rassa45

Ich hatte dieses Problem buchstäblich vor ein paar Minuten. Das Problem ist, dass Sie festlegen müssen async:false Zu async:true. Ich bin mir nicht sicher, warum das funktioniert, ich denke, weil HTML5 neuer als XML ist.

Der Fehler ist auf dieser Seite etwas anders, aber ich denke, er ist ähnlich: JavaScript console.log verursacht den Fehler: “Synchronous XMLHttpRequest on the main thread is deprecated…”

Aktualisieren

Hallo, ich melde mich mit einigen neuen und verbesserten Informationen zurück. Der Cross-Origin tritt sowohl bei Ports als auch bei Domains/IPs auf und wird wahrscheinlich bei den meisten anständigen Browsern vorhanden sein. Wenn Sie wissen möchten, was passiert, ändern Sie die IP in localhost oder umgekehrt (wenn Sie localhost verwenden). Beachten Sie, dass dieses Problem auch auftreten kann, wenn Sie verschiedene Ports verwenden. Stellen Sie für eine schnelle Lösung sicher, dass Sie in den Headern des Back-End-Servers den richtigen Access-Control-Header ausgeben response.addHeader("Access-Control-Allow-Origin", "*");.

Aus dieser Frage wird Code abgeleitet

  • Hallo, danke für deine Antwort. Ich habe versucht, async von false auf true zu setzen, aber seltsamerweise antwortet mein Server überhaupt nicht. Im Gegensatz zu async = false, das mein Server Informationen zurückgibt.

    – Moo33

    1. Oktober 2015 um 3:12 Uhr

  • Sie haben einen undefinierten Fehler erhalten, was bedeutet, dass die URL für die Post-Methode möglicherweise ungültig ist. Ist die js-Datei auf dem Server?

    – rassa45

    1. Oktober 2015 um 3:18 Uhr

  • Ah ja, Ressource konnte nicht geladen werden bedeutet definitiv, dass Sie die falsche URL haben. Welche Art von Server verwenden Sie?

    – rassa45

    1. Oktober 2015 um 3:18 Uhr

  • Es ist ein Java-Server, der auf meinem Computer läuft. Es scheint jedoch die richtigen Informationen zurückzugeben, was bedeutet, dass die URL korrekt sein sollte. Ich habe einen anderen Fehler gefunden, der von meiner Browserkonsole ausgelöst wird, was mich denken lässt, dass es sich um ein domänenübergreifendes Problem handelt. Es heißt: Auf der angeforderten Ressource ist kein ‘Access-Control-Allow-Origin’-Header vorhanden. Herkunft ‘lokaler Host‘ wird daher kein Zugriff gewährt. Es macht jedoch keinen Sinn, warum es domänenübergreifend ist, da beide von meinem Computer ausgeführt werden?

    – Moo33

    1. Oktober 2015 um 6:53 Uhr

  • Um nach einiger Zeit zu antworten, ist die Standortüberschrift anders. Meine Vermutung ist, dass Sie die Server an verschiedenen Ports oder einer lokalen Host-Subdomain ausführen. In jedem Fall ist es wichtig zu bedenken, dass sich ein localhost:4000 immer noch ziemlich von beispielsweise einem localhost:80 unterscheidet. Für einen Computer ist es möglich, dass sich ein bösartiger und ein gutartiger Server am selben Standort befinden, nur weil die Serverstandorte unterschiedlich sind. Aus Sicherheitsgründen ist diese Funktion aktiviert. Es passiert möglicherweise nicht bei einem älteren Browser wie Netscape oder wenn Sie Curl verwenden.

    – rassa45

    28. Mai 2017 um 17:49 Uhr

Es war ein Cross-Origin-Resource-Problem (CORS). Mein Server hat mir die richtigen Informationen zurückgegeben, aber mein Browser hat sich geweigert, sie zu akzeptieren. Um das Problem zu beheben, musste ich 2 Zeilen auf meinem Java-Server (nicht meiner Site) hinzufügen, um sie als Antwortheader:

yourownvariable.setHeader("Access-Control-Allow-Origin:", "origin url of your site");
yourownvariable.setHeader("Access-Control-Allow-Methods", "GET, POST,PUT");

  • Auch hier trat dieser Fehler auf

    – rassa45

    1. Oktober 2015 um 12:19 Uhr

Ich hatte das gleiche Problem, mit identischer Fehlermeldung. In meinem Fall wurde es durch die Servereinstellung verursacht a Feature-Richtlinie Kopfzeile mit sync-xhr: none. Das Entfernen dieser Direktive hat das Problem behoben.

  • Dieselbe Einstellung im Header „permissions-policy“ wie „sync-xhr=()“ gefunden

    – Mhepton

    18. Januar um 17:55 Uhr

Dies begann einige Tage nach einigen Browser-Updates. Es scheint, dass die aktuellen Browser jetzt nicht-asynchrone Anfragen ablehnen.

Kurze Antwort: Nicht einstellen async: false

So können Sie Ihre Webseiten mit Chrome unter Windows testen

chrome.exe --allow-file-access-from-files

1442760cookie-checkNetworkError: „Senden“ auf „XMLHttpRequest“ konnte nicht ausgeführt werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy