2016-03-25 6 views
0

jQuery Ajaxを使用してフォームを送信しています。いつ、いつ成功しないのですか:jQuery Ajaxメソッドでvalueが実行されますか? (ヘッダーの場所は変更されません)

データは正常に送信されましたが、少し問題があります。このコードでコメント文を追加すると、成功:function(){}は実行されません(場所は変更されません)。

Q. 1これらのステートメントを削除すると、そのステートメントが実行されます。私はこの論理を理解していません。実際に実行されるのはいつですか?xyのチェックはこれにどのように影響しますか?

ここに私のアヤックスコードです:

$(document).ready(function(){ 
    $("#button").click(function(){ 
    **//FOLLOWING TWO LINES MAKES SUCCESS NOT RUN** 
    //var **xy**= $("#digits").val(); 
    //if(xy!=""){ 
    $.ajax({ 
     url: "submitform.php", 
     type: "POST", 
     data: $('#signupform').serialize(),   
     success: function(result){ 
      $(location).attr('href', 'login2.php'); 
      }, 
      error: function(){ 
      alert(error); 
      } 
     }); 
    // } 
    }); 
}); 

ここでは、入力タグ懸念しています:私はevent.preventDefaultを(書き込み時)

<form id="signupform" name="form1" method="post" enctype="multipart/form-data"> 
      <input id="digits" type="text" name="phone" maxlength="10" placeholder="Enter your phone no." required /> 
...... 

Q.2を。送信ボタンのデフォルトアクションを停止するには、入力フィールドの属性が必要です。が機能しません。それはなぜそうですか?それは解決することができますか?

+0

約Q1:あなたのフォームには 'digits'というIDの要素がありませんので、' xy'は常に空になります。 –

+0

Q2について:送信ボタンで 'preventDefault'を呼び出すと、デフォルトの動作(送信開始)が妨げられ、入力フィールドはチェックされません。あなたは 'form'の' submit'イベントをリッスンして、これのデフォルトの振る舞いを防ぐ必要があります。なぜなら、submitイベントはinput要素のチェックの後でフォームが送信される前に送信されるからです。 –

+0

修正できますか、別のアプローチを使用する必要がありますか?たとえば、PHPやJavaScriptの検証ですか? –

答えて

1

2の質問:あなたが送信ボタン上clickのイベントのためにpreventDefaultを呼び出す場合は、デフォルトの動作入力フィールドがチェックされていないので、阻止される(提出開始)

あなたは、入力要素がチェックされた後とformが提出される前にsubmitイベントが送信されるので、代わりにformsubmitイベントに耳を傾け、このデフォルトの動作を阻止しなければなりません。

$(document).ready(function() { 
    $("#signupform").on('submit', function(e) { 
    e.preventDefault(); 

    //FOLLOWING TWO LINES MAKES SUCCESS NOT RUN** 
    //var **xy**= $("#digits").val(); 
    //if(xy!=""){ 
    $.ajax({ 
     url: "submitform.php", 
     type: "POST", 
     data: $('#signupform').serialize(), 
     success: function(result) { 
     $(location).attr('href', 'login2.php'); 
     }, 
     error: function() { 
     alert(error); 
     } 
    }); 
    // } 
    }); 
}); 
+0

うまくいきました。しかし、ここでは "e"は何ですか?何がかかりますか?説明していただけますか? –

+0

@VikasKumarイベントリスナーのコールバックに渡される最初の引数はイベントオブジェクトです。 –

+0

イベントオブジェクトとは何ですか? –

1

あなたはjqueryのAJAXを使用すると、結果の2種類があります:

400 - 成功機能によって 402または500のキャプチャもOKの状態は内部エラーであり、それらは誤差関数によってキャプチャされます。

エラー機能で、存在しないエラー変数を印刷しようとしています。

また、preventDefaultを使用すると、イベントを処理する変数を渡してもキャンセルできません。

+0

のドキュメントを参照してください。はい、アラート(「エラー」)に変更しました今はエラーが表示されています。しかし、なぜこのエラーが表示されていますか? –

+0

あなたのフォームには、enctype属性があります。あなたはその形式でファイルをアップロードしようとしていますか? –

関連する問題