私は同様のケースについて複数のスレッドを読んできましたが、今でもそれを正しく実行することはできません。ajax form submit - > phpからresponeを受け取ります
私がしたいこと 基本的には、ユーザーがログイン(単にデータベースへのクエリ)を変更できるフォームがあります。 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の/アヤックス:
$("#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でも)。
は2番目の '$("#changeLogin ")です。コード内にsubmit(); – Jeff
また、html形式で 'action'を定義してそこから取得する必要はありません。それを空のままにして、jsでURLを設定します。 – Jeff