2017-12-26 20 views
0

2つのボタンsave & continuesave and exitの2つのフォームがあります。私はこれらのボタンに2つのID、つまりそれぞれsave_contsave_exitを与えました。ajaxは複数回クリックします。

最初のボタンは正常に動作しますが、2番目のボタンをクリックすると、最初のボタンのajaxも発生します。その結果、URLをリダイレクトできず、ページがリロードされます。ボタンの

//Save and Continue 
$('#save_cont').click(function() { 
    $.ajax({ 
     url: 'demo_save_data', 
     type: 'POST', 
     data: $("#add_seasonal_discount").serialize(), 
     success: function(result) { 
      if (result.success > 0) { 
       alert("Save and Continue"); 
       window.location.reload(); 
      } 

     } 
    }); 

}); 

//Save and Exit 
$('#save_exit').click(function() { 

    $.ajax({ 
     url: 'demo_save_data', 
     type: 'POST', 
     data: $("#add_seasonal_discount").serialize(), 
     success: function(result) { 
      if (result.success > 0) { 
       alert("Save and Exit"); 
       window.location = 'demo_seasonal_discount_newpage_report.php'; 
      } 

     } 
    }); 

}); 
$("#save_cont").unbind("click"); 

HTML::

public function demo_save_data() { 
    DB::table('demo_table') -> 
     insert([ 
      'invoice_type' => Input::get('invoice_type'), 
      'sales_channel' => Input::get('pricing_group'), 
      'material' => Input::get('matnr'), 
      'from_date' => Input::get('fromdt'), 
      'to_date' => Input::get('todt'), 
      'discount' => Input::get('discount'), 
      'bukrs' => Session::get('company') 
     ]); 

    return array('success' => 1); 
} 

EDIT:私のコントローラ内部

<div class="form-group col-md-12 required"> 
    <button title="Save" id="save_cont" class="scl_issave a-link btn scl-btn-clasic scl-btn-margin-v" type="button">Save & Continue</button> 
    <button title="Save" id="save_exit" class="scl_issave_exit a-link btn scl-btn-clasic scl-btn-margin-v" type="button">Save & Exit</button> 
</div> 

demo.discount.blade.phpインサイド

は終わり、$("#save_cont").unbind("click");を追加しました。今すぐ2番目のボタンsave_exitは正常に動作しますが、最初のボタンsave_contはまったく動作しません。

+0

要求された編集が行われました – user9141607

+0

[Ajaxの重複した可能性があります。クリックで複数のリクエストを防止](https://stackoverflow.com/questions/18775455/ajax-prevent-multiple-request-on-click) – rahulsm

+1

あなたの最初のアヤックスリクエストについての気持ちは悪いです。おそらく、サーバー側で行われたリダイレクトのようなものかもしれません。最初のクリックイベントが発生したことをどのように確認しますか? –

答えて

0

私は一目であなたが記述する動作が起こるのを見ることができません。

function thingClicked(theThing){ 
    $.ajax({ 
    url:'demo_save_data', 
    type:'POST', 
    data:$("#add_seasonal_discount").serialize(), 
    success:function(result){ 
     if(result.success>0){ 
     if(theThing == 'save_cont'){ 
      alert("Save and Continue"); 
      window.location.reload(); 
     }else if(theThing == 'save_exit'){ 
      alert("Save and Exit"); 
      window.location='demo_seasonal_discount_newpage_report.php'; 
     } 
     } 
    }); 
    } 

あなたが好きしかし、その後の進路あなたはそれを呼び出すことができます:あなたは同じように、同じ場所に同じデータを送信されるため、単一の関数にそれらを統合し、しかし、問題を解消することができます。あなたは問題ないはず使用結合.click() ...

$("#save_cont").click(thingClicked(this.id)); 

$("#save_exit").click(thingClicked(this.id)); 

何も本当に変わっていないが、2つの間の唯一の違いは、そうそこにも条件付きロジックを置いてもよいリターンで、あいまいさを取り除く。

+0

上記を試しても、結果は同じです。 #save_contは正常に実行されますが、save_exitは2回実行されます。つまり、最初にアラート(「保存して終了」)してから(「保存して続行」) – user9141607

関連する問題