gpt4 book ai didi

Jquery Ajax 表单未提交且 url 显示 csrf token

转载 作者:行者123 更新时间:2023-12-01 07:48:06 25 4
gpt4 key购买 nike

我对 Ajax 不太熟悉,我正在尝试使用 jquery、ajax 和 thymeleaf 来提交表单以获取 View 。我知道帖子网址有效,因为如果我只是告诉ajax在页面加载后立即提交,表单中的任何内容都会毫无问题地提交到数据库,但如果我尝试使用提交按钮来执行此操作,则表单变为空白,并且 url 更改为类似 http://localhost:8080/viewCourse/post/1?_csrf=d512fb5c-08e5-4373-895e-1297b0c35a4b,并且没有任何内容进入数据库,但控制台中也没有错误,所以我不确定发生了什么。

这是我的 jquery 和 ajax

var postId = /*[[${post.id}]]*/'1';

var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");

$(document).ajaxSend(function(e, xhr, options) {
xhr.setRequestHeader(header, token);
});

$("#submit").click(function() {
$.ajax({
url : "newComment",
type : "post",
data : {
"postId" : postId,
"newComment" : $("#newComment").val()
},
success : function(data) {
console.log(data);
location.reload();
},
error : function() {
console.log("There was an error");
}
});
});

这是我使用 thymeleaf 的 html

<div id="newCommentForm">
<form>
<div class="form-group">
<textarea rows="2" id="newComment" placeholder="comment"
class="form-control" style="width: 520px;">
</textarea>
</div>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<input type="submit" value="Comment" id="submit" class="btn btn-info"/>
</form>
</div>

如果有人能看到我做错了什么并让我知道那就太好了,提前致谢。

最佳答案

首先,您必须在 $(document).ready(function(){}); 中声明您的点击监听器,否则这部分代码将在您的 DOM 元素存在之前运行,并且因此他们不会调用您的点击函数。

解决此问题后,您将看到您的表单将执行其默认操作(与您现在遇到的情况相同)。为此,您必须阻止提交按钮的默认操作:

$(document).ready(function(){
$("#submit").on("click", function(ev) {
ev.preventDefault();

...

});
});

我个人更喜欢on("click", ...),但你的方法也可以。希望对您有所帮助。

关于Jquery Ajax 表单未提交且 url 显示 csrf token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33850029/

25 4 0
文章推荐: jquery - 如何使用 JSON 将这些
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com