为什么springmvc返回某种字符串会导致ajax错误!
当控制器返回123这样的Integer时,它工作正常;
当控制器返回整数字符串(如“ 123”)时,它工作正常;
当控制器返回“ abc”之类的字符串时,ajax将出错!
与https://www.mkyong.com/jquery/jquery-ajax-request-return-200-ok-but-error-event-is-fired/
一样的问题这是对springmvc控制器的简单ajax请求
ajax请求
$.ajax({
type: "POST",
url: "/test",
data: JSON.stringify(json),
dataType: "json",
async : false,
contentType: "application/json",
success: function(msg){
alert(msg);
debugger;
result = msg;
},
error: function(msg){
debugger;
alert(msg);
}
})
控制文件:
@RequestMapping("test")
public String test(){
//return "123"; ajax works fine
return 123; ajax works fine
return "abc"; //ajax parsererror
}
我希望所有类型的String都可以,包括“ abc”之类的String即可!
谁能帮我!
谢谢!
答案 0 :(得分:0)
因为Json,123是合格的JSON,因为它被视为number。 但是abc不是合格的JSON,“ abc”是合格的JSON。 SpringMvc使用abc而不是“ abc”返回到前端网站,因此ajax无法解决它。
我可以考虑两种稀释方法。 第一个答案是:使用Util类用“ abc”装饰abc;每次返回String时,都需要这样做。
public class StringUtils {
public static String modifyReturnJson(String str){
return "\""+str+"\"";
}
}
@RequestMapping("/test")
public String test() throws IOException {
return StringUtils.modifyReturnJson("123");
//return "123"; ajax works fine
// return 123; //ajax works fine
// return "abc"; //ajax parsererror
}
第二种方式:删除数据类型:“ json”