1

私のコードは:

$('#trainer_registration_form_new').submit(function(){
            var email           = $('#email').val();
            var dataString      = 'email='+email;
            $.ajax({
                type     : "get",
                url      : "checkEmail.php",
                data     : dataString,
                async    : false,
                dataType : "html",
                success  : function(result){
                    if(result==1) {
                        alert('email alredy exist');
                        $("input#email").focus();
                        $('#email').val('');
                        tempField =  $('#email');
                        setTimeout("tempField.focus();",1);
                        return false;
                    } else {
                       return true;
                    }
                }
            });
     });

このコードで何が問題なのか、送信時に重複したメールをチェックしてフォームを送信したいだけです。しかし、他のアイデアが機能していませんか?

4

3 に答える 3

0

に変更dataType : "html",してみてくださいdataType : "text",

alert(result);if(result==1) {

于 2013-02-21T09:53:06.730 に答える
0

return falseフォームが送信されないようにするつもりですか?コールバック関数ではなくコールバックfalseから戻るため、これは当てはまりません。successsubmit()

submit()代わりに、コールバックの先頭にブール変数を作成し、その値を設定successして最後に返すことを検討できます。

だからここに大まかな例があります:

$('#trainer_registration_form_new').submit(function(){
   var $form = $(this);
   $.ajax({
      // As you were...
      success: function(result) {
          if(result==1) {
              // As you were..
          } else {
              $form.submit()
     }
   });

   return false;
});
于 2013-02-21T09:49:54.800 に答える
0

ステートメントは、AJAX 要求のハンドラーreturnとして渡される無名関数内にあるsuccessため、送信ハンドラー関数からではなく、その関数からの値のみを (どこにも) 返しません。変数を使用して戻り値を格納し、代わりにその関数に設定するtruefalse、その関数内に設定する必要があります。

async: falseAJAX を使用する目的全体が無効になり、リクエストが完了するまでブラウザがロックされるため、使用も理想的には避ける必要があります。

于 2013-02-21T09:50:10.340 に答える