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;
}
}
}