我一直在閱讀有關類似情況的多線程,但即使現在我仍然無法正確地做到這一點。ajax表單提交 - >從PHP接收響應
我想做什麼 基本上,即我有允許用戶更改他的登錄(簡單地查詢數據庫)的形式。 PHP腳本看起來像這樣:
if(isset($_POST['login'])) {
$doEdit = $user->editData("login", $_POST['login']);
if($doEdit) {
$result = displayInfobox('success', 'Good!');
} else {
$result = displayInfobox('warning', 'Bad!');
}
} else {
$error = 'Bad!';
echo $error;
}
displayInfobox僅僅是一個類,即成功和內容DIV - 好!
現在我想通過AJAX發送這個表單,並顯示$ result而不重新加載頁面。
HTML:
<form id="changeLogin" method="post" class="form-inline" action="usercp.php?action=editLogin">
<label for="login">Login:</label><br />
<div class="form-group ">
<input type="text" class="form-control" name="login" id="login" required>
<input type="submit" value="Zmień" class="btn btn-primary">
</div>
</form>
而finnally - 我的jQuery/AJAX:
$("#changeLogin").submit(function(e) {
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
$.ajax({
url: formURL,
type: "POST",
data: postData,
success: function(result) {
alert(result);
},
error: function(response) {}
});
e.preventDefault();
});
$("#changeLogin").submit();
如果我走了 「成功」 的空白,它的工作原理 - >形式是通過AJAX提交,登錄已更改,但我看不到結果消息。否則整個頁面會重新加載。另外,當我打F5時,表單再次被提交(即使是在Ajax中)。
是第二個$(「#changeLogin」)。submit();'在你的代碼中? – Jeff
也不需要在html-form中定義'action',然後從那裏抓取它。將它留空並將網址設置爲js。 – Jeff