2016-05-21 16 views
1

jquery ajaxで登録フォームを作成しています。私は、フォームを送信し、すでにDBに存在するユーザ名の値を入力するとjQuery ajaxでfalseが返されない

function validateData() 
{ 
    var email = jQuery("#email").val(); 
    var username = jQuery("#username").val(); 
    var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    var regex = new RegExp(/^\+?[0-9(),.-]+$/); 
    if(!emailReg.test(email)) 
    { 
     alert('Please enter valid email'); 
     return false; 
    } 
    var agreement = jQuery("#agereement").is(":checked"); 
    if(agreement == false) 
    { 
     alert("Please agree with the agreement !!! "); 
     return false; 
    } 
    var pass = jQuery("#password").val(); 
    var repass = jQuery("#repeatpass").val(); 
    if(pass != repass) 
    { 
     alert("Password & Repeat Password Should be same"); 
     return false; 
    } 

     var FirstData = "email=" + email+"&username="+username; 
     var url = "ajaxcheck.php"; 
     jQuery.ajax({ 
      dataType : 'html', 
      type: 'GET', 
      url : url, 
      data : FirstData, 
      complete : function() { }, 
      success: function(data) 
       { 
        if(data == '') 
        { 
         alert("No Problem"); 
         var flag = "true"; 
        } 
        else{ 
         alert("Username Or Email ID Already Exists"); 
         var flag = "false";      
        } 

       } 
     }); 
     alert(flag); 
     return flag; 
} 
</script> 

それはUsername Or Email ID Already Existsを警告ではなく、ページ上の滞在のフォームを送信:私のjQueryのコードは以下の通りです。

var flag = "true"; 
… 
    var flag = "false"; 
… 
return flag; 

問題がある:それはエラーはそれではなく、あなたが書くときにformタグで

<form onsubmit="return validateData();"> 
.... 
<input type="submit"> 
</form> 
+0

:あなたは電子メールは、あなたがの行で何かを使用することができますが存在するかどうかを確認したいと仮定すると? –

+0

@u_mulder、OPはasync:falseを使用しています。これは、ajax呼び出しが同期することを意味します。 –

+0

@PatrickEvans、ありがとう、その後ストリング値に移動します) –

答えて

1

使用onsubmitフォームの送信のページにとどまるべき来れば、私は何をすべき"true"および"false"は、単語「true」または「false」を含むstringsです。実際booleantrueまたはfalseを取得するには、引用符を取り除く:

​​

イベントハンドラはboolean型の戻り値ではなく、文字列を理解しています。

+0

何も起こっていません –

+0

@Rory suggestとしても適用され、 '' true' '' true' '' false' '' false''に置換されます – C2486

+0

私は更新しましたが、フラグは空白に戻します –

2

+0

私はこれをしましたが、フラグの値も警告していません –

+0

'var flag ='で2行を変更するだけで、既存のコードで 'alert'を削除する必要はありません。あなたが既存の '警告'を保持している場合、彼らはこの変更の後でも動作するはずです。 –

+0

コンソールでは、フラグが定義されていないと言います –

0

flagはブール値ではなく文字列に設定しています。 "true""false"の代わりにtruefalseを使用してみてください。どちらも真実です。

1

私は別の角度からお手伝いしようとしています。 http://formvalidation.io/examples/contact-form/

アヤックス「の.done」あなたは「.fail」サーバーから正常な応答を取得したときに起こる起こる:ここ

は、(ブートストラップ/ PHP/jQueryを使って)フォーム検証を行う方法の例です。要求の送信または応答の受信に失敗しました。右、あなたがasynchronous`が何を意味するか知っている `

if(response.IsEmailValid === 'false') 
{ 
    $('#alertContainer') 
     .removeClass('alert-success') 
     .addClass('alert-warning') 
     .html('Sorry, email has been taken') 
     .show() 
} 
+0

Javascriptで "0" == '0' == 0と 'true' == 'true' == true。 – Margus

関連する問題