Java-@ResponseBody字符串-错误200

Java-@ResponseBody字符串-错误200,java,spring,spring-boot,Java,Spring,Spring Boot,我试图从我的控制器获得字符串响应,但我得到以下错误: SyntaxError:JSON输入意外结束(…)“错误200” 当我将响应更改为布尔值或其他类型时,它工作正常。问题是当我试图返回字符串时 js代码: $.ajax({ method: "POST", url: "./signup", data: _data, dataType: "json", contentType : "application/json;charset=UTF-8", succes

我试图从我的控制器获得
字符串响应
,但我得到以下错误:

SyntaxError:JSON输入意外结束(…)“错误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;
    }
你知道我该怎么解决这个问题吗?我试过几件事,但都不管用。我认为响应格式是错误的,正如代码所期望的那样

编辑

我已经更改了代码(删除了
生成的
),但仍然收到相同的错误:

SyntaxError:JSON输入意外结束(…)“错误200”


你的方法是错误的。你说的是productproducts={“text/plain”,“application/*”}但是你还添加了@ResponseBody,它将生成JSON格式的响应


我建议您删除属性products。并验证返回的字符串格式是否正确

尝试将响应封装在ResponseEntity类中

@RequestMapping(value = "/signup", method = RequestMethod.POST)
    public @ResponseBody ResponseEntity<String> signup(@RequestBody UserSignup details) {
        message = "ok";
        return new ResponseEntity<>(message, HttpStatus.OK);
    }
@RequestMapping(value=“/signup”,method=RequestMethod.POST)
public@ResponseBody ResponseEntity注册(@RequestBody UserSignup详细信息){
message=“确定”;
返回新的响应属性(消息,HttpStatus.OK);
}

同时仔细检查您发送到服务器的数据,也许这就是问题所在,您能给我们显示数据值吗?

因为当响应是不同的字符串时,我没有问题,我已经解决了创建自己对象的问题。下面是代码:

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;
        }
    }
}
公共类响应{
私人T消息;
私人例外;
公共异常getEx(){
退换货;
}
公共无效集合(例外集合){
this.ex=ex;
}
公共T getMessage(){
返回消息;
}
公共无效设置消息(T消息){
this.message=消息;
}
}
@控制器
公共类MyControllerController{
私人回应(私人回应);;
私有字符串消息;
public MyController(){u response=new response();}
@RequestMapping(value=“/signup”,method=RequestMethod.POST)
public@ResponseBody响应注册(@RequestBody UserSignup详细信息){
试一试{
message=“”;
//代码。。。
_response.setMessage(message);
返回响应;
}捕获(例外情况除外){
_回复:setEx(ex);
返回响应;
}
}
}
浏览器中的响应示例:

对象{消息:“”,例如:null}


我尝试删除
生成的
,并尝试返回一个类似“ok”的字符串,但仍然收到相同的错误@cralfaro@gon250你能用你现在测试的数据更新你的问题吗?错误信息呢?只是为了在与您相同的时间点进行更新,我添加了新代码。基本上,我已经删除了products,并确保返回一个字符串。从ajax调用中删除contentType:“application/json;charset=UTF-8”,url是正确的??你有一个点url:“./signup”,我已经尝试了你告诉我的所有更改,但没有任何效果(我得到了相同的错误)。我做了一个不同的事情,让它工作,因为我在一个答案中添加@克拉法罗
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;
        }
    }
}