2017-09-15 64 views
2

我使用laravel 5.4叫,我的Ajax功能,每由於我創建兩個用戶,但是我想創建每次點擊一個用戶AJAX請求射擊的兩倍,而成功是一次

實際上它包含另一次叫了兩聲頁面,該頁面沒有其對

$(document).ready(function(){ 

或類似

$(document).on('click','#addproject',function(){ 

任何功能,但它們包括腳本標記 但如果我這樣做不包括他們,那麼阿賈克斯只調用一次 Ajax調用:

$(document).on('click','#addproject',function(){ 

     $.ajax({ 
      type:'get', 
      url:"{!! URL::to('addProject') !!}", 
      data:{}, 
      success:function(data){ 
       console.log('success'); 
       console.log(data); 
       console.log(data.length); 
       $("#newproject").fadeIn(); 
      }, 
      error:function(){ 

      }, 
     }); 
    }); 

路線:

Route::get('/addProject','[email protected]'); 

控制器:

public function addProject(Request $request){ 
     $project = new Project; 
     $data = array(
     ); 

     $project->create($data); 
    } 
+0

在click事件監聽器中放置一個'alert()'或'console.log()'來檢查它是否顯示兩次? –

+0

是的,它被稱爲兩次 –

+0

檢查我提供的答案 –

回答

0

我解決了這個問題,它原來是我使用加載此load()頁面,但我應該裝使用window.location.href = "updateform"; 非常基本的錯誤,雖然這個頁面。 和解決方案可能是我的應用程序特定的。

1

我認爲你需要阻止點擊事件的第二次,您可以通過jquery禁用或隱藏按鈕。

$("#yourSubmitBtn").click(function(event) { 
    //your ajax request here 

    //hide button 
    $(this).hide(); 
    return false; 

    //or you can disabled 
    $(this).attr('disabled','disabled'); 
    return false; 
}); 
1

也許你可以嘗試使用.one()方法。

<script type="text/javascript"> 
var handler = function(e){ 

    $.ajax({ 
     type:'get', 
     url:"{!! URL::to('addProject') !!}", 
     data:{}, 
     success: function(data){ 
     console.log('success'); 
     console.log(data); 
     console.log(data.length); 
     $("#newproject").fadeIn(); 
     $('#addproject').one('click', handler); 
     }, 
     error: function(){} 
    }); 
    e.stopImmediatePropagation(); 
    return false; 
} 

$('#addproject').one('click', handler); 

一個方法將確保處理程序每​​個事件類型每個元素最多執行一次。然後成功後,您將需要重新綁定事件處理程序。

+0

但成功函數在上次調用中調用,所以我必須忽略第一個一個不是第二個 –