我正在尝试通过Ajax POST保存一些用户输入,但是我仍然遇到此错误
不允许使用405方法。
var formData = {
category: $("#category").val(),
assetType: $("#assetType").val(),
description: $("#description").val(),
}
console.log(formData);
$.ajax({
dataType: 'json',
url: '/add-asset',
data: formData,
type: "POST",
enctype: 'multipart/form-data',
processData: false,
contentType: false,
success: function(data) {
if (data.status == 1) {
openAlertDialog("Success", data.message, "Continue");
} else {
openAlertDialog("Error", data.message, "Continue", "");
}
},
error: function(data) {
openAlertDialog("Error", data.message, "Continue", "");
},
});
控制器代码:
@RequestMapping(value="/add-asset", method = RequestMethod.POST)
public @ResponseBody String addAsset(@ModelAttribute AssetCategory as, Principal principal) {
as.setAssetID(UUID.randomUUID().toString());
as.setCreatedBy(principal.getName());
JsonObject result = new JsonObject();
assetService.save(as);
result.addProperty("result", "Success");
result.addProperty("status", 1);
result.addProperty("message", "Changes Saved.");
return result.toString();
}
我可以检索用户输入,但不能将其传递给我的控制器。
Chrome的内部来源
答案 0 :(得分:0)
我已通过将此代码放入我的表单中对其进行了修复
<input type="hidden" name="_csrf" th:value="${_csrf.token}" />
它似乎在寻找令牌,因此我在表单中添加了隐藏的输入。