所以,我是新來的ajax,我試圖使用ajax和jquery提交表單,我想我有服務器端邏輯都想通了,因爲當我加載頁面它會自動提交併且頁面刷新速度非常快。空白表單將進入數據庫,但其中有很多內容,因爲頁面會一直提交每次刷新。所以我認爲我的服務器端正在工作,但我不知道要做什麼來阻止它刷新,還要使用我在html表單中提交的提交按鈕進行提交。我在我的html頁面中使用了thymeleaf。Ajax自動提交和刷新頁面
這是我的HTML表單,使用thymeleaf
<div id="newCommentForm">
<fieldset>
<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" class="btn btn-info" />
</fieldset>
</div>
這是我的jQuery和AJAX
<script th:inline="javascript">
/*<![CDATA[*/
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);
});
$(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");
}
});
});
/*]]>*/
在此先感謝。
UPDATE
所以現在當我提交表單的頁面刷新和URL做一些奇怪的事情,並顯示CSRF令牌,並沒有提交到數據庫中的數據。因此,當我提交http://localhost:8080/viewCourse/post/1?_csrf=abefbd5b-392e-4c41-9d66-d66616fc4cc7
時,如果我取消了所做的更改並將其放回到刷新循環中,並且如果我可以在表單中獲取任何文本,在頁面刷新之前它實際上會提交到數據庫,所以我認爲這意味着我有一個有效的網址,因爲它有點作品。我真的不知道是什麼原因造成的,但表單似乎沒有提交正確的信息,只有csrf標記。這裏是我的最新的jQuery,Ajax和HTML
jQuery的 //
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");
}
});
});
/*]]>*/
和我的更新HTML
<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>
我完全複製了代碼,現在甚至沒有嘗試提交,甚至沒有在控制檯上顯示「有錯誤」。 – dochsner
您是否將網址調整爲正確的值,並確保該按鈕的ID是正確的。 –
是啊,我所做的只是複製和粘貼你的代碼,即使URL不正確,是否至少會給我一個錯誤? – dochsner