2015-10-01 13 views
8

Sto provando a fare una richiesta POST ajax su un server ospitato localmente sul mio laptop ma non riesco a ottenere alcuna informazione indietro. Quando si fa clic su un pulsante sul mio sito (localhost), posso vedere il server passando di nuovo le informazioni corrette, ma sul front-end ottengo questo errore:NetworkError: Impossibile eseguire 'send' on '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); 
    } 
}); 

Sembra essere innescare un errore ogni tempo e non "successo". Qualcuno ha idea di cosa c'è che non va?

Edit: Ho provato l'invio di una richiesta POST normale senza AJAX e mi genera un errore 'undefined' così:

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

Altre cose che ho provato: 1) Modifica dei browser Safari (stessa cosa, il server restituisce le informazioni ma il sito riceve un errore) 2) Impostazione async = true da false. Per qualche motivo quando l'ho impostato su true, il server non risponde affatto. Quando è falso, il server risponde.

risposta

6

Ho avuto questo problema letteralmente pochi minuti fa. Il problema è che è necessario impostare async:false su async:true. Non sono sicuro del motivo per cui funziona, suppongo perché HTML5 è più recente di XML.

errore è un po 'diverso su questo sito, ma penso che sia simile: JavaScript console.log causes error: "Synchronous XMLHttpRequest on the main thread is deprecated..."

Aggiornamento

Ciao, sono tornato con qualche nuovo e migliore informazione. Il Cross-Origin si verifica con le porte e domini/IP e probabilmente sarà installato con i browser più decenti. Se vuoi sapere cosa sta succedendo, prova a cambiare l'IP in localhost o viceversa (se stai usando localhost). Tenere presente che questo problema può verificarsi quando si utilizzano anche porte diverse. Per una soluzione rapida, assicurati che nelle intestazioni di qualunque server back-end sia presente l'intestazione Access Control corretta response.addHeader("Access-Control-Allow-Origin", "*");.

codice è derivato da this question

+1

Ciao, grazie per la tua risposta. Ho provato a impostare async su true da false ma stranamente il mio server non risponde affatto. A differenza di async = false che il mio server restituisce informazioni. – Moo33

+0

Hai ricevuto un errore non definito che indica che l'url per il metodo post potrebbe non essere valido. Il file js è sul server? – ytpillai

+0

Ah sì, impossibile caricare la risorsa significa sicuramente che hai l'URL sbagliato. Che tipo di server stai usando? – ytpillai

5

E 'stato un problema Croce Origin Resource (CORS). Il mio server stava restituendo le informazioni corrette a me, ma il mio browser ha rifiutato di accettarlo. Per risolvere il problema ho dovuto aggiungere 2 righe sul mio server Java (non il mio sito) per impostare loro come l'intestazione risposta:

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

Felice che tu possa risolvere il problema – ytpillai

+0

Questo errore si è verificato [qui] (http://stackoverflow.com/questions/20433655/no-access-control-allow-origin-header-is-present-on-the-requested-resource- o) anche – ytpillai

-3

È possibile testare le vostre pagine web con Chrome su Windows come questo

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