0

私は、コールバックレースのように見えるものを含むかなり古典的な問題だと思うものを持っていますが、私のすべての読書にもかかわらず、私はまだ立ち往生しています。以下に貼り付けられたコードがあります。

これは単純なログインフォームであり、特定のボタンがクリックされると、フォームデータを外部のphpファイルに「ajaxically」送信することがわかります。phpが実行されたら、結果を受け取ります。ここでのテストとして、phpファイルから電子メールアドレスを警告します。

これを実行すると、ajaxコールバックが実行されません。ボタンをすばやく繰り返しクリックすると、適切なアラートが表示されます。追加のアラートを入力すると、正しい応答も得られます。

これらの他の愚かなことをせずにそれを実行するにはどうすればよいですか?

よろしくお願いしますRR

  $('#'+this.loginForm[0].parentId+"logIn")
      .on('click', function() {
        var jax = $.ajax(
          {  
          type: "POST",  
          url: "../sharedfunctions3/act-membership.php",
          data: {email: document.getElementById(that.parentId+'email').value, 
                  password: document.getElementById(that.parentId+'password').value,
                  path: that.path,
                  action: "logIn"
                }
          });

        jax.done(function() 
              { 
              obj = JSON.parse($.trim(jax.responseText)); 
              alert(obj.email);
              });
        jax.fail(function() { alert("error"); });
      alert(1);
      });
4

1 に答える 1

0

ボタンをクリックすると、ブラウザが同期的および非同期的に送信しているという予感がしました。

return false;、フォームを送信せず、それ以降のデフォルトのアクションを防ぐようにブラウザに指示します。

フォームタグ内のボタンをクリックすると、送信入力でなくても、ほとんどのブラウザがフォームを送信します。

于 2013-03-24T02:43:06.610 に答える