5

に挿入します。 insertステートメントPHPコードを実行する前にクエリに重複レコードを検索し、insert statementに続行します。フォームは、という<code>php</code>ファイルを使用して<code>mysql</code>に挿入して、

:ajaxからphpファイルを呼び出すとき。それは2回実行され、重複レコードとして応答を得る。

よく私はerror_logを2回呼び出されました。

フォーム検証のトリガポイント

$("#load-modal").on("click","#addcountryformsubmitbtn",function(e){ 
    e.preventDefault(); 
    var $form = $("#addcountryform"), $url = $form.attr('action'); 
    $form.submit(); 
}); 

これは、フォームが検証した後に提出する方法です:bootstrapvalidator、コアPHP、mysqliの、Chromeブラウザを使用して

}).on('success.form.bv', function(e){ 
    e.preventDefault(); 
    var $form = $("#addcountryform"), $url = $form.attr('action'); 
    $.post($url,$form.serialize()).done(function(dte){ $("#load-modal").html(dte); }); 
}); 

実際のJS:

  $(document).ready(function() { 
      $php_self_country="<?php echo $_SERVER['PHP_SELF']."?pg=countrycontent"; ?>"; 
      $("#country-content").load($php_self_country,loadfunctions); 
      $("#country-content").on("click", ".pagination a", function (e){ 
       e.preventDefault(); 
       $("#country-loading-div").show(); 
       var page = $(this).attr("data-page"); 
       $("#country-content").load($php_self_country,{"page":page}, function(){ 
        $("#country-loading-div").hide(); 
        loadfunctions(); 
       });    
      }); 
      $("#country-content").on("click","#closebtn",function(e){ 
       e.preventDefault(); 
       $("#country-content").load($php_self_country,loadfunctions); 
      }); 
     }); 
     function loadfunctions(){ 
      $("[data-toggle='tooltip']").tooltip(); 
      $("#country-content").on("click","#addcountrybtn, #addcountrylargebtn",function(e){ 
       e.preventDefault(); 
       $.ajax({ 
        url: $php_self_country, 
        type: "POST", 
        data: { 'addcountry':'Y' }, 
        dataType: "html", 
        cache: false 
       }).done(function(msg){ 
        $("#load-modal").html(msg); 
        $("#load-modal").modal('show'); 
        $('input[type="radio"]').iCheck({ checkboxClass: 'icheckbox_minimal', radioClass: 'iradio_minimal' }); 
        modalvalidation(); 
       }).fail(function() { 
        $("#load-modal").html("Request Failed. Please Try Again Later."); 
       });   
      }); 
      $("#country-content").on("click",".tools a",function(e){ 
       e.preventDefault(); 
       var recordid = $(this).attr("record-id"); 
       $.ajax({ 
        url: $php_self_country, 
        type: "POST", 
        data: { 'modifycountry':recordid }, 
        dataType: "html", 
        cache: false 
       }).done(function(msg){ 
        $("#load-modal").html(msg); 
        $("#load-modal").modal('show'); 
        $('input[type="radio"]').iCheck({ checkboxClass: 'icheckbox_minimal', radioClass: 'iradio_minimal' }); 
        modalvalidation(); 
       }).fail(function() { 
        $("#load-modal").html("Request Failed. Please Try Again Later."); 
       }); 
      }); 
      $("#load-modal").on("click","#addcountryformsubmitbtn",function(e){ 
       e.preventDefault(); 
       var $form = $("#addcountryform"), $url = $form.attr('action'); 
       $form.submit(); 
      }); 
      $("#load-modal").on("hide.bs.modal", function() { 
       window.location.href=$php_self_country_pg; 
      }); 
     } 
     function modalvalidation(){ 
      $('#addcountryform').bootstrapValidator({ 
       message: 'This value is not valid', 
       feedbackIcons: { 
        valid: 'glyphicon glyphicon-ok', 
        invalid: 'glyphicon glyphicon-remove', 
        validating: 'glyphicon glyphicon-refresh' 
       }, 
       fields: { 
        [-------Validation part comes here----------] 
       } 
      }).on('success.form.bv', function(e){ 
       e.preventDefault(); 
       var $form = $("#addcountryform"), $url = $form.attr('action'); 
       $.post($url,$form.serialize()).done(function(dte){ $("#load-modal").html(dte); }); 
      }); 
     } 

HTML

は、このHTMLはAJAXを経由して、ボタンをクリックaddcountrybtnに呼ばれ、ベースHTMLファイルであるload-modalをDIVすることで書き込みされています。

<div class="modal-dialog"> 
<div class="modal-content"> 
    <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
     <h4 class="modal-title"><i class="fa fa-exchange"></i> <?php echo COUNTRYLABEL; ?></h4> 
    </div>  
    <div class="modal-body"> 
     <form role="form" method="POST" action="self.php" name="addcountryform" id="addcountryform" class="form-horizontal"> 
      <div class="form-group"> 
       <div class="col-xs-3"> 
       <label for="countryname" class="pull-right">Country Name</label> 
       </div> 
       <div class="col-xs-9"> 
       <div class="lnbrd"> 
       <input type="text" class="form-control" name="countryname" placeholder="Enter Country Name"> 
       </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-xs-3"> 
       <label for="crncyname" class="pull-right">Currency Name</label> 
       </div> 
       <div class="col-xs-9"> 
       <div class="lnbrd"> 
       <input type="text" class="form-control" name="crncyname" placeholder="Enter Currency Name"> 
       </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-xs-3"> 
       <label for="crncycode" class="pull-right">Currency Code</label> 
       </div> 
       <div class="col-xs-9"> 
       <div class="lnbrd"> 
       <input type="text" class="form-control" name="crncycode" placeholder="Enter Currency Code"> 
       </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-xs-3"> 
       <label for="forrate" class="pull-right">Foreign Currency Rate<?php echo isset($icon)?$icon:''; ?></label> 
       </div> 
       <div class="col-xs-9"> 
       <div class="lnbrd"> 
       <input type="text" class="form-control" name="forrate" placeholder="Enter Foreign Currency Rate."> 
       </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-xs-3"> 
       <label for="taxpercent" class="pull-right">Tax &#37;</label> 
       </div> 
       <div class="col-xs-9"> 
       <div class="lnbrd"> 
       <input type="text" class="form-control" name="taxpercent" placeholder="Enter Tax Percentage"> 
       </div> 
       </div> 
      </div> 
     </form>   
    </div> 
    <div class="modal-footer clearfix"> 
     <button type="button" class="btn btn-danger pull-right" id="addcountryformsubmitbtn">Add</button> 
    </div> 
</div> 

注: - 予想通りビューコードのデータベースのポイントで動作します。

+0

'#addcountryformsubmitbtn'のHTMLを表示できますか? 'type =" button ""属性があることを確認してください。 – sp00m

+0

@ sp00m問題のHTMLを見つけます。 _tried both_ 'type =" button "'と 'type =" submit "の出力は同じです。 –

答えて

0

私が見たもののいくつかが原因である可能性があります。

IEを使用している場合は、(同じURLに同じデータが送信されている)POSTを実行する直前にGETを実行していることがわかりました。そのため、サーバー上で確認する価値があります(そしてGETを無視する)

AJAXコールの後にボタンのクリックイベントの最後に何か他のものを追加することがあります(実際には、通常はデフォルトの防止の先頭に最初の行を置きます返信陳述はまさに最後になります)...

e.stopImmediatePropagation(); 
return false; 
+0

その作業!!!すべての 'e.preventDefault();'の隣に 'e.stopImmediatePropagation();'を追加し、 'return false;';を使用しませんでした。それは将来問題を引き起こすでしょうか? IE10とChromeでテスト済み:) –

関連する問題