0

だから私は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));} 
      });
4

2 に答える 2

1

ブラウザ コンソールのネットワーク タブをチェックして、何かを投稿しているかどうかを確認し、サーバーからの応答をチェックして、ここに投稿してください。

完全な $.ajax() メソッドを使用して、それが機能するかどうかを確認することもできます。「エラー」コールバックにアクセスできますが、ショートカット $.post ではアクセスできません。

更新:このコードを試して、何が得られるか教えてください:

$.ajax({
        "url" : "login_ajax.php",
        "data" : {'email':this.email.value, 'pass':this.pass.value},
        "type" : "POST",
        "dataType" : "json",
        "success" : function(data){
            alert("Back from successful ajax request");
        },
        "error" : function(jqXHR, textStatus, errorThrown){
            alert("Oops, there was an problem: " + errorThrown);
        }

    });
于 2013-03-30T03:37:07.550 に答える