だから私はAJAX経由で送信しようとしているフォームを持っています:これは、ログインを処理するphpスクリプトをテストするために設定する方法です。
<form class="login_form" method="post" action="login_ajax.php">
Email: <input name="email" type="text" /> <br />
Password: <input name="pass" type="password" /> <br />
<input type="submit" />
</form>
これはうまくいくようです。正しい資格情報は良好な結果を返し、"success" 属性を持つ json オブジェクトを返します。不適切な資格情報は "failed" json オブジェクトを返します。
しかし、スクリプトをセットアップしようとすると、何も機能しません。
$(document).ready(function() {
$(".login_form").submit(function () {
try {
$.post("login_ajax.php", {'email':this.email.value, 'pass':this.pass.value},
function (data) {
alert("Back from AJAX");
}, 'json');
alert("Sent to AJAX");
}
catch(e) {
alert(e);
}
return false;
});
});
例外は発生していませんが、「BACK」アラートも発生していません。「Sent to AJAX」を取得しただけで、何も表示されません。jQuery.post に渡されるコールバック関数について、決して呼び出されないという誤解がありますか?
編集: .post 行を以下の行に置き換えたところ、正しく機能し、成功関数が呼び出され、必要なデータが得られました。これらは本質的に同等であるという印象を受けました。
$.ajax("login_ajax.php",
{'type':'POST',
'data':{'email':this.email.value, 'pass':this.pass.value},
'error':function(thingy,status,em) {alert("ERROR: "+em);},
'success':function(data, status) {alert(JSON.stringify(data));}
});