2011-09-15 16 views
7

Sto lavorando alla connessione tra un front-web e un servizio di assistenza. Sono riuscito a effettuare una chiamata Ajax interdominio, ma ho ancora un piccolo problema.impossibile ottenere il responseText quando 400 errore

Impossibile ricevere il messaggio di risposta quando si verifica un errore 400.

Ho verificato con wireshark e sono sicuro che il messaggio di risposta è stato inviato dal REST. Ma quando mi guardo allo Firebug ho questo:

POST http: api.yutagz.com utenti 400 Bad Request 133ms

Object {readyState = 0, status = 0, = statusText responseText "errore" = ""}

"400 Bad Request" è ok, ma ho bisogno del responseText per dire all'utente cosa realmente accade.

Ecco il mio codice di chiamata (lavorare sul caso di successo):

$.ajax({ 
type: "POST", 
url : "http://api.yutagz.com/users", 
data: dataString, 
dataType: 'json', 
success : function(data,data1,data2){ 
    alert("OK : "+data); 
    console.log(data2); 
}, 
error:function (xhr){ 
    alert(JSON.stringify(xhr)); 
    console.log(xhr); 
    switch (xhr.status) { 
     case 404: alert("404"); 
     case 400: alert("400"); 
      // Take action, referencing xhr.responseText as needed. 
    } 
}, 
complete : function (xhr){ 
    alert(JSON.stringify(xhr)); 
    console.log(xhr); 
    switch (xhr.status) { 
     case 404: alert("404"); 
     case 400: alert("400"); 
      // Take action, referencing xhr.responseText as needed. 
    } 
} 
}); 

Ecco un test (di lavoro con Chrome, ma non con Firefox 3.6):

http://jsfiddle.net/RTvQQ/

E qui un biglietto di jQuery:

http://bugs.jquery.com/ticket/7868

+0

In Chrome, questo funziona perfettamente per me. Ottengo: "{" errore ": {" tipo ":" badRequest "," messaggio ":" errorUserEmailMissing "}}" –

+0

Sta funzionando con Firefox 5, ho appena testato. Ma cosa sta succedendo con 3.6 –

risposta

1

vedo in Chrome 13:

E in FF6:

Quindi basta usare error.message e passare da lì.

Problemi correlati