2015-01-05 2 views
5

Server-Seite zugreifen: Spring FrameworkFrühling ResponseEntity & AJAX Funktion Fehler: kann nicht Antwort Körperinhalt

Ich habe ein Frühlings-Controller, die eine Methode hat, die den Typ ResponseEntity<String> zurückgibt.

Für ganz gut Anfragen kehre ich folgendes:

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

Aber wenn es irgendein Problem während der Ausführung oder Exception fangen, kehre ich:

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

Wo ERROR_MESSAGE eine angepasste String für jede enthält Art der eingefangenen Ausnahme

Client-Seite: AJAX-Aufruf

Wenn die POST-Methode aufgerufen wird und gibt HttpStatus.OK, AJAX

success: function (data, message, xhr) 

genannt wird, und ich kann den String OK_MESSAGE durch den Zugriff auf data easilly zugreifen .

Das Problem kommt, dass POST-Methode

error: function (xhr, status, errMsg) 

genannt wird HttpStatus.BAD_REQUEST, AJAX gibt, aber ich kann den String ERROR_MESSAGE durch den Server gesendet nicht zugreifen, die ich den Benutzer zeigen müssen.

Irgendwelche Vorschläge?

+0

Hallo @charliebrownie können Sie bitte Post den Code von Ajax und Controller? – liorsolomon

+0

Hallo! Meine Spring-Controller-Methode gibt genau das zurück, eine 'ResponseEntity ', wobei der String die 'ERROR_MESSAGE'-Variable ist. Der einzige Unterschied im AJAX-Aufruf besteht darin, dass ich, wenn ich eine OK-Antwort erhalte, auf diesen String in dieser "data" -Variable zugreifen kann. Gibt es eine Möglichkeit, von der Fehlerfunktion aus darauf zuzugreifen? – charliebrownie

+0

Wenn Sie den Code benötigen, kann ich ein * edit * oder etwas tun, aber ich frage mich, ob es eine Möglichkeit gibt, auf den String zuzugreifen, den ich innerhalb der 'ResponseEntity' von der' error' Funktion, die ich vermisse, passiere ... denn es gibt einen Weg von der AJAX 'Erfolgsfunktion '. – charliebrownie

Antwort

4

auf dem Controller Ich kehre die ResponseEntity auf folgende Weise:

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

Im JS würde ich die Antwort Fehlerzeichenfolge auf folgende Weise überprüfen:

$.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); 
      } 
     }) 
Verwandte Themen