java - 如何修复 Spring Boot 不支持的请求方法 'POST'?

标签 java jquery ajax spring spring-boot

我正在使用 Spring Boot 创建一个 API。在这个项目中,我使用了spring web、JPA、jSTL和MySql作为API的依赖项。在这个项目中,我创建了 Controller 、模型和存储库。基本上,这个 API 执行 CRUD 操作。我还创建了一个使用我自己的 API 的客户端。当我使用 Postman 发送数据时,它成功地将数据插入数据库并给出 200 OK 代码。然后我创建了网页并创建了一个 html 表单并使用 Ajax 来获取该数据。但问题是,当我单击表单中的插入按钮时,它给了我这个错误。

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue May 01 05:16:48 IST 2018 There was an unexpected error (type=Method Not Allowed, status=405). Request method 'POST' not supported

我该如何解决这个问题?

我的 Controller :

package com.kisalka.pacrestapi.controller;

import java.util.List;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import com.kisalka.pacrestapi.repository.ImRepository;
import com.kisalka.pacrestapi.model.ImModel;

@RestController
@RequestMapping("/api")
public class ImController {

    @Autowired
    private ImRepository TaskRepository;


    @RequestMapping(method=RequestMethod.POST, value="/tasks")
    public ImModel createNote(@RequestBody ImModel note) {
        return TaskRepository.save(note);
    }

}

我的网页:

<form class="form-horizontal" method="POST" action="">

                    <div class="form-group">
                        <label class="control-label col-md-3">Project Name</label>
                        <div class="col-md-7">
                            <input type="text" class="form-control" name="pname" id="txtPname"/>
                        </div>              
                    </div>

                    <div class="form-group">
                        <label class="control-label col-md-3">Developer Name</label>
                        <div class="col-md-7">
                            <input type="text" class="form-control" name="devname" id="txtDevname"/>
                        </div>              
                    </div>

                    <div class="form-group">
                        <input type="submit" class="btn btn-primary" value="Save" id="btnRegister"/>
                    </div>

                </form>

jQuery 和 Ajax 部分:

<script type="text/javascript">
        $(document).ready(function () {

            // Save the new user details
            $('#btnRegister').click(function () {
                $.ajax({
                    url: '/api/tasks',
                    method: 'POST',
                    data: {
                        pname: $('#txtPname').val(),
                        devname: $('#txtDevname').val()
                    },
                    success: function () {
                        alert("Inserted"); 
                    },
                    error: function (jqXHR) {
                        $('#divErrorText').text(jqXHR.responseText);
                        $('#divError').show('fade');
                    }
                });
            });
        });
    </script>

最佳答案

为什么你有一个带有提交按钮的表单和一个ajax请求?很可能首先提交表单,这意味着请求正在发送到“”,这可以解释为什么您会收到405:不支持请求方法“POST”

尝试更换

<form class="form-horizontal" method="POST" action="">

对于

<form class="form-horizontal" method="POST" action="/api/tasks">

关于java - 如何修复 Spring Boot 不支持的请求方法 'POST'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50109802/

相关文章:

Java Swing 将变量分配给 URL

jquery - 使用 CSS 在悬停时循环浏览单词列表 |有暂停和点击状态?

javascript - 如何在生成动态html时在Jquery Clone中设置值

Javascript/jQuery 变量未给出预期值

javascript - 有没有办法将 HTML 响应转换为 JSONP 对象或其他方式来获得成功事件?

javascript - 数据表不应用每页过滤

java - Java 中的字符串拆分问题(MAC 地址)

java - 跟踪子/子进程的进程 ID?

java - 在安全集群中使用 Nifi

javascript - 不使用带有 Jquery 事件的匿名函数