2015-10-01 10 views
8

Ich versuche eine POST-AJAX-Anfrage an einen lokal auf meinem Laptop gehosteten Server zu senden, aber ich kann anscheinend keine Informationen zurückbekommen. Wenn ich eine Taste auf meiner Website klicken (localhost), kann ich den Server sehen die richtigen Informationen vorbei zurück, aber an dem vorderen Ende bekomme ich diesen Fehler:NetworkError: Fehler beim Ausführen von 'send' auf 'XMLHttpRequest'

error: NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load ' 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 ein Fehler zu sein Auslösen jedes Zeit und nicht 'Erfolg'. Hat jemand eine Idee was falsch ist?

Edit: Ich habe versucht, ohne AJAX eine normale POST-Anfrage senden und es wirft mich einen ‚undefined‘ Fehler auch:

$(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) Browser Safari Ändern (Gleiches, Server gibt Informationen zurück, aber die Site erhält einen Fehler) 2) Einstellung async = true von false. Aus irgendeinem Grund reagiert der Server überhaupt nicht, wenn ich ihn auf true festlege. Wenn es falsch ist, antwortet der Server.

Antwort

6

Ich hatte dieses Problem buchstäblich vor ein paar Minuten. Das Problem ist, dass Sie async:false zu async:true setzen müssen. Ich bin nicht sicher, warum das genau funktioniert, da HTML5 neuer als XML ist.

Fehler ein bisschen anders auf dieser Seite ist, aber ich denke, dass es ähnlich ist: JavaScript console.log causes error: "Synchronous XMLHttpRequest on the main thread is deprecated..."

aktualisieren

Hallo, ich bin mit einigen neuen und verbesserten Informationen zurück. Das 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 wollen, was passiert, versuchen Sie, die IP auf localhost zu ändern oder umgekehrt (wenn Sie localhost verwenden). Beachten Sie, dass dieses Problem auftreten kann, wenn Sie auch andere Ports verwenden. Stellen Sie für eine schnelle Lösung sicher, dass Sie in den Headern von dem beliebigen Back-End-Server den richtigen Access-Control-Header response.addHeader("Access-Control-Allow-Origin", "*"); ausgeben.

-Code von this question

+1

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

+0

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

+0

Ah ja, Ressource nicht laden bedeutet definitiv, dass Sie die falsche URL haben. Welche Art von Server verwenden Sie? – ytpillai

5

abgeleitet war es ein Kreuz Herkunft Ressourcenproblem (CORS). Mein Server hat mir die richtigen Informationen zurückgegeben, aber mein Browser hat es abgelehnt. Um es zu beheben hatte ich 2 Zeilen auf meinem Java-Server hinzufügen (nicht meine Seite) eingestellt werden sie als die Antwort-Header:

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

Froh, dass Sie es beheben konnten – ytpillai

+0

Dieser Fehler ist aufgetreten [hier] (http://stackoverflow.com/questions/20433655/no-access-control-allow-origin-header-ispresent-on-the-requested-resource- oder) auch – ytpillai

-3

Sie können Ihre Webseiten mit Chrome unter Windows wie folgt

chrome.exe --allow-file-access-from-files 
testen
Verwandte Themen