AJAX请求触发两次,同时成功调用一次

时间:2017-09-15 09:29:08

标签: javascript php jquery ajax laravel-5

我正在使用laravel 5.4,我每次都会调用两次Ajax功能,因为我创建了两个用户但是我想为每次点击创建一个用户

实际上它包含另一个页面,而该页面没有它

$(document).ready(function(){

或任何类似

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

但它们包含脚本标记 但如果我不包含它们,那么Ajax只被调用一次 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','HomeController@addProject');

控制器:

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

        $project->create($data);
    }

3 个答案:

答案 0 :(得分:2)

我解决了,结果是我使用load()加载此页面,但我应该使用window.location.href = "updateform";加载此页面 虽然非常基本的错误。 和解决方案可能是我的应用程序特定。

答案 1 :(得分: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);

一种方法将确保每个事件类型的每个元素最多执行一次处理程序。然后,在成功之后,您将需要重新绑定事件处理程序。

答案 2 :(得分:0)

我认为您需要第二次阻止点击事件,您可以通过jquery禁用或隐藏按钮。

sudo R CMD javareconf