405 AJAX POST中的方法不允许错误

时间:2020-01-14 13:34:53

标签: jquery ajax spring-mvc

我正在尝试通过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的内部来源

enter image description here

1 个答案:

答案 0 :(得分:0)

我已通过将此代码放入我的表单中对其进行了修复

<input type="hidden" name="_csrf" th:value="${_csrf.token}" />

它似乎在寻找令牌,因此我在表单中添加了隐藏的输入。