gpt4 book ai didi

java - Spring MVC Ajax POST

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:08:24 24 4
gpt4 key购买 nike

我正在尝试使用 Ajax 将 JSON 对象发布到 Rest Spring MVC Controller ,但我遇到了一些麻烦。

让我们向您展示我的代码:

Controller

@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");
}
});
}

最后是 html 表单:

<form:form modelAttribute="user" method="POST" enctype="utf8">
<tr>
<td><label>Username</label></td>
<td><form:input path="name" id="username" /></td>
<td>
<p id="usernameError">
</p>
</td>
</tr>
<button type="button" onClick="checkUsername()">Register</button>
</form:form>

因此,当我按下“注册”按钮时,我调用了 checkUsername 方法,仅用于测试。

调用 ajax 函数并将 JSON 发送到 Controller 。我使用了调试, Controller 似乎获得了 JSON 对象。

问题出在 Controller 响应上,因为在我的 html 页面的错误 div 中,我得到了这个错误:

HTTP 状态 406此请求标识的资源只能根据请求“接受” header 生成具有 Not Acceptable 特征的响应。

问题出在哪里?谁能出出主意?

最佳答案

您需要在请求映射注释中指定以下代码

@RequestMapping(value = "/register/checkUsername.html", method = RequestMethod.POST,  consumes=MediaType.APPLICATION_JSON_VALUE)

您无需指定 produces 属性,因为@Responsebody 将根据请求对象内容类型[可选]生成内容。如果你想要其他的,那么你只需要提到它。

; charset=utf-8 是 Ajax 调用中的默认值。您无需单独提及。尝试做这些改变。

关于java - Spring MVC Ajax POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35612821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com