【问题标题】:AJAX request firing twice while success is called onceAJAX 请求触发两次,而成功调用一次
【发布时间】:2018-02-24 10:48:18
【问题描述】:

我使用的是 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);
    }

【问题讨论】:

  • 在点击事件监听器里面放一个alert()或者console.log()来检查它是否显示两次?
  • 是的,它被调用了两次
  • 查看我提供的答案
  • @MayankPandeyz 没用
  • 我在上面做了一些改动,请检查一下

标签: javascript php jquery ajax laravel-5


【解决方案1】:

我解决了,原来是我用load()加载这个页面,但我应该用window.location.href = "updateform";加载这个页面 虽然非常基本的错误。 并且解决方案可能是我的应用程序特定的。

【讨论】:

    【解决方案2】:

    也许您可以尝试使用.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);
    

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

    【讨论】:

    • 但是在最后一次调用中调用了成功函数,所以我必须忽略第一个而不是第二个
    【解决方案3】:

    试试这个,

    $("#addproject").on('click',function(){
        //your code here
    });
    

    而不是,

    $(document).on('click','#addproject',function(){
        //your code
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      相关资源
      最近更新 更多