2016-11-14 11 views
2

私は私のコントローラからstring responseを取得しようとしているが、私は以下のエラーを取得:Javaの - @ResponseBodyのString - エラー200

SyntaxError: Unexpected end of JSON input(…) "Error 200"

私はブールまたは異なるタイプへの応答を変更すると、それはだがうまく働いている。問題は、文字列を返そうとするときです。

JSコード:

$.ajax({ 
    method: "POST", 
    url: "./signup", 
    data: _data, 
    dataType: "json", 
    contentType : "application/json;charset=UTF-8", 
    success : function(data) { 
     console.log(data) 
    }, 
    error : function(qXHR, textStatus, errorThrown){ 
     console.log(errorThrown, "Error " + qXHR.status); 
    } 
    }); 

コントローラコード:

@RequestMapping(value = "/signup", method = RequestMethod.POST, produces = {"text/plain", "application/*"}) 
    public @ResponseBody String signup(@RequestBody UserSignup details) { 
     //... 
     return message; 
    } 

どのように私はこの問題を解決することができます任意のアイデア?私はいくつかのことを試みたが、何も働かなかった。私は、コードが期待しているように応答形式が間違っていると思います。

編集

私は自分のコードを変更した(producesを削除)が、私はまだ同じエラーを取得:

SyntaxError: Unexpected end of JSON input(…) "Error 200"

@RequestMapping(value = "/signup", method = RequestMethod.POST) 
    public @ResponseBody String signup(@RequestBody UserSignup details) { 
     message = "ok"; 
     } 
     return message; 
    } 

答えて

0

回答が異なる場合はStringとして私は自分のオブジェクトを作成する問題を解決しました。そこで、以下のコードである:私は `` produces``を削除しようとしていると私は、「OK」のような文字列を返すようにしようとIてる

Object {message: "", ex: null}

5

あなたの方法が間違っています。 = {"text/plain"、 "application/*"}を生成すると言っていますが、JSON形式の応答を生成する@ResponseBodyも追加しています。

私はあなたが属性が生成する削除することをお勧めします。そして、あなたが戻ってきている文字列がうまくまたResponseEntityクラスでサーバーに送信され、二重チェックデータを

@RequestMapping(value = "/signup", method = RequestMethod.POST) 
    public @ResponseBody ResponseEntity<String> signup(@RequestBody UserSignup details) { 
     message = "ok"; 
     return new ResponseEntity<>(message, HttpStatus.OK); 
    } 

をあなたの応答をラップする

+0

:ブラウザで

public class Response<T> { private T message; private Exception ex; public Exception getEx() { return ex; } public void setEx(Exception ex) { this.ex = ex; } public T getMessage() { return message; } public void setMessage(T message) { this.message = message; } } @Controller public class MyControllerController { private Response<String> _response; private String message; public MyController() { _response = new Response<>(); } @RequestMapping(value = "/signup", method = RequestMethod.POST) public @ResponseBody Response<String> signup(@RequestBody UserSignup details) { try{ message = ""; // code... _response.setMessage(message); return _response; }catch (Exception ex){ _response.setEx(ex); return _response; } } } 

応答例それでも同じエラーが発生します。 @cralfaro – gon250

+0

@ gon250あなたは現在テストしているデータで質問を更新してください。とエラーメッセージ?あなたと同じポイントで更新されるだけです – cralfaro

+0

私は新しいコードを追加しました。基本的に私は生産物を取り除きました。私はストリングを返すようにしています。 – gon250

0

試しに形成されている、多分これが問題であることを確認し、あなたは私たちを見ることができます_データ値?