Java SpringMVCAjaxPost
我试图用Ajax将JSON对象发布到Rest Spring MVC控制器,但遇到了一些问题 让我们向您展示我的代码: 控制器Java SpringMVCAjaxPost,java,ajax,spring,rest,spring-mvc,Java,Ajax,Spring,Rest,Spring Mvc,我试图用Ajax将JSON对象发布到Rest Spring MVC控制器,但遇到了一些问题 让我们向您展示我的代码: 控制器 @RequestMapping(value = "/register/checkUsername.html", method = RequestMethod.POST, produces=MediaType.APPLICATION_JSON_VALUE) public @ResponseBody JsonResponse checkUsername(@RequestBo
@RequestMapping(value = "/register/checkUsername.html", method = RequestMethod.POST, produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody JsonResponse checkUsername(@RequestBody JsonUsername username) {
String usernameString = username.getUsername();
JsonResponse response = new JsonResponse();
response.setMessage(usernameString + "Available");
return response;
}
Ajax函数
function displayUsernamError(data) {
var json = "<h4>Eroare</h4><pre>"
+ JSON.stringify(data, null, 4) + "</pre>";
$('#usernameError').html(json);
}
function checkUsername(){
var username = document.getElementById("username");
var search = {
"username" : username.value
}
$.ajax({
type : "POST",
contentType : 'application/json; charset=utf-8',
dataType : 'json',
url : "http://localhost:8080/skill-assessment/register/checkUsername.html",
data : JSON.stringify(search),
success : function(result) {
console.log("SUCCESS: ", data);
displayUsernamError(result);
},
error: function(e){
console.log("ERROR: ", e);
displayUsernamError(e);
},
done : function(e) {
console.log("DONE");
}
});
}
函数显示用户名错误(数据){
var json=“Eroare”
+stringify(数据,null,4)+”;
$('#usernamererror').html(json);
}
函数checkUsername(){
var username=document.getElementById(“用户名”);
变量搜索={
“用户名”:username.value
}
$.ajax({
类型:“POST”,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
url:“http://localhost:8080/skill-评估/注册/检查用户名.html“,
数据:JSON.stringify(搜索),
成功:功能(结果){
console.log(“成功:”,数据);
显示用户名错误(结果);
},
错误:函数(e){
日志(“错误:”,e);
显示用户名错误(e);
},
完成:功能(e){
控制台日志(“完成”);
}
});
}
最后是html表单:
$.ajax({
headers: {
Accept : "application/json",
Content-Type: "application/json"
},
data: "data",
...
})
用户名
登记
所以,当我点击Register按钮时,我正在调用checkUsername方法,仅用于测试
调用ajax函数,并将JSON发送到控制器。我使用了调试,控制器似乎得到了JSON对象
问题在于控制器响应,因为在我的html页面的error div中,我得到以下错误:
HTTP状态406
此请求标识的资源只能根据请求“接受”标头生成具有不可接受特征的响应
问题在哪里?谁能给我一个主意?使用
@ResponseBody
需要对象到json,
似乎缺少一些jar文件
(jackson-mapper-asl.jar和jackson core asl.jar)
尝试导入它首先检查控制器是否返回JSON。您可以使用任何REST客户端,并查看返回头是什么。如果没有,那么添加jacksonmapperbean 另外,尝试在ajax调用中设置Accept头
@RequestMapping(value = "/register/checkUsername.html", method = RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE)
您需要在请求映射注释内指定以下代码
var variable="test";
$.ajax({
url: baseUrl + "nameController/test1",
async: false,
data: {val: variable},
dataType: 'html',
success: function (dat) {
console.log(dat);
}
});
您无需指定products属性,因为@Responsebody将根据请求对象内容类型生成内容[可选]。如果你想要其他的,那么你只需要提到它
);charset=utf-8是Ajax调用中的默认值。你不必单独提及。尝试做这些更改。in.js(java脚本)
ajax函数
@RequestMapping(value = "test1", method = RequestMethod.POST)
public @ResponseBody
String checkRoomStatusReservation(@RequestParam(value = "val", required = true) String parse) {
System.out.println("parse"+parse);
//value from parse=test
return parse;
}
您可以创建nameController.java
控制器
您可以尝试使用consumes=MediaType.APPLICATION\u JSON\u值
@RequestMapping(value = "test1", method = RequestMethod.POST)
public @ResponseBody
String checkRoomStatusReservation(@RequestParam(value = "val", required = true) String parse) {
System.out.println("parse"+parse);
//value from parse=test
return parse;
}