2015-01-05 23 views
5

Server Side: Spring FrameworkPrimavera funzione di errore ResponseEntity & AJAX: non può accedere ai contenuti corpo della risposta

Ho un controller Primaverache ha un metodo che restituisce il tipo ResponseEntity<String>.

Per completamente buone richieste torno il seguente:

return new ResponseEntity<>(OK_MESSAGE, new HttpHeaders(), HttpStatus.OK); 

Ma se c'è qualche problema durante l'esecuzione o eccezione cattura, torno:

return new ResponseEntity<>(ERROR_MESSAGE, new HttpHeaders(), HttpStatus.BAD_REQUEST); 

Dove ERROR_MESSAGE contiene una stringa personalizzata per ogni tipo di Eccezione catturata.

lato client: chiamata AJAX

Quando questo metodo POST viene chiamato e restituisce HttpStatus.OK, AJAX

success: function (data, message, xhr) 

si chiama e posso accedere al easilly String OK_MESSAGE accedendo data .

Il problema arriverà quel metodo POST restituisce HttpStatus.BAD_REQUEST, AJAX

error: function (xhr, status, errMsg) 

si chiama ma non posso accedere al String ERROR_MESSAGE inviato dal server, che ho bisogno di mostrare all'utente.

Qualche suggerimento?

+0

Hi @charliebrownie potete per favore inserire il codice di entrambi ajax e controller? – liorsolomon

+0

Ciao! Il metodo My Spring Controller restituisce esattamente questo, un 'ResponseEntity ', dove la stringa è la variabile 'ERROR_MESSAGE'. L'unica differenza nella chiamata AJAX è che quando ottengo una risposta OK, posso accedere a quella stringa nella variabile 'data'. C'è un modo per accedervi dalla funzione 'error'? – charliebrownie

+0

Se hai bisogno del codice, posso fare un * edit * o qualcosa del genere, ma mi chiedo se c'è un modo per accedere a quella stringa che sto passando all'interno di 'ResponseEntity' dalla funzione' error' che mi manca ... in quanto vi è un modo dalla funzione AJAX 'successo'. – charliebrownie

risposta

4

Sul controller ho riportare il ResponseEntity nel seguente modo:

return new ResponseEntity<>("Enter the full url", new HttpHeaders(), HttpStatus.BAD_REQUEST); 

Nel JS Vorrei verificare la stringa di errore di risposta nel modo seguente:

$.ajax({ 
      url: 'http://localhost:8080/link', 
      data: 'url=/www.stackoverflow.om', 
      type: 'GET', 

      contentType: 'application/json; charset=utf-8', 
      success: function (data, textStatus, xhr) { 
       alert(xhr.status); 
      }, 
      error: function (data, textStatus, xhr) { 
       alert(data.responseText); 
      } 
     }) 
Problemi correlati