2017-09-15 31 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

但成功函数在上次调用中调用,所以我必须忽略第一个一个不是第二个 –