javascript - XHR 加载失败 : POST java spring

标签 javascript java jquery ajax spring

我正在尝试使用 ajax 将数据从我的 jsp 页面发送到我的 Controller 。 但是我无法完成它,每次我都会收到帖子标题中显示的错误。

JSP 内容:(这是我加载所有用户的模式,我想通过将我的用户 ID 和当前项目 ID 发送到我的 Controller 来将它们添加到项目中)

<div class="modal fade" id="myModal" role="dialog">
        <div class="modal-dialog">
            <!-- Modal content-->
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                    <h4 class="modal-title"></h4>
                </div>
                <div class="modal-body">
                    <h1 class="text-center">UserList</h1>
                    <br><br>
                    <table class="table table-hover">
                        <thead>
                            <tr>
                                <th>Photo</th>
                                <th>Firstname</th>
                                <th>Lastname</th>
                                <th>Function</th>
                                <th>Email</th>
                            </tr>
                        </thead>
                        <tbody>
                            <c:forEach var="u" items="${users}">
                                <tr>
                                    <td><img src="${u.getPhoto()}"
                                             alt="Alternate Text" class="img-responsive" /></td>
                                    <td>${u.getFirstname()}</td>
                                    <td>${u.getLastname()}</td>
                                    <td>${u.getFunction()}</td>
                                    <td>${u.getEmail()}</td>
                                    <td><Button type="Button" onclick="myFunction()" id="addButton" class="btn btn-default">Add</button></td>
                            <input type="hidden" id="currentProjectId" value="${p.getProjectId()}">
                            <input type="hidden" id="userId" value="${u.getUserId()}">
                            </tr> 
                        </c:forEach>
                        </tbody>
                    </table>

                    <script>
                        function myFunction()
                        {
                            var currentProjectId = $('#currentProjectId').val();
                            var userId = $('#userId').val();

                            $.ajax({
                                type: "POST",
                                contentType: "application/json",
                                url: "addUserToProject",
                                data: JSON.stringify({projectId: currentProjectId, userId: userId}),
                                dataType: 'json',
                                timeout: 600000,
                                success: function (data) {
                                    console.log("SUCCESS: ", data);
                                },
                                error: function (e) {
                                    console.log("ERROR: ", e);
                                }
                            });
                        }
                    </script>

                </div>
            </div>
        </div>
    </div>

Controller 内容:

@RequestMapping(value = "/addUserToProject", method = RequestMethod.POST)
public @ResponseBody
String addUser(@RequestParam("projectId") String projectId, @RequestParam("userId") String userId) {

    UUID uid = UUID.fromString(userId);
    UUID pid = UUID.fromString(projectId);
    User u = UserList.getInstance().readUserById(uid);
    Project p = ProjectList.getInstance().readProjectByID(pid);

    ProjectList.getInstance().addUsertoProject(u, p);
    return "redirect:/projectpage";
}

我现在得到的结果是这样的: Console output

我在这里做错了什么?非常感谢任何帮助!

最佳答案

您应该将参数传递给您要发布的网址,例如:

url: "/addUserToProject?projectId=" + currentProjectId + "&userId=" + userId;

并且不要忘记从您的 ajax 帖子中删除“数据”部分。

PS:如果您想在 ajax 请求中使用“数据”,您需要从 Java 方法中删除 @RequestParam 注释。相反,您可以创建一个新的模型类并将参数与其 getter 和 setter 方法放在一起。使用 @RequestBody 注释将该模型传递给 Java 方法。然后您可以在您的 ajax 请求中使用“数据”。

关于javascript - XHR 加载失败 : POST java spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47631569/

相关文章:

javascript - 是否可以将已经有 float : left; set? 的 div 居中

ajax - 在 Chrome 中使用本地文件的 jQuery getJSON 问题

javascript - 是否可以使用从 .onclick 事件函数获得的变量,并在所述事件之外、代码的另一部分中使用它?

javascript - JS中如何合并两个数组?

javascript - 当鼠标离开和进入窗口时,如何平滑地将图层从一个位置移动到另一个位置?

java - JAVA中带有关闭按钮和按钮事件的自动移动图像

java - 将数据从 ListView 传递到其他类中的字段

java - 像在 Hibernate 中一样选择

jquery - 如何用jquery获取内容和容器标签

javascript - 如何在 Rails 4 的 javascript 中包含 ruby​​ 变量?