如何在laravel 5.2中控制多个ajax请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在laravel 5.2中控制多个ajax请求相关的知识,希望对你有一定的参考价值。

我正在开发一个应用程序,根据不同的操作,不同的ajax请求会触发。

例如,存在具有发送按钮的聊天窗口。当我点击该按钮时,成功发送带有ajax的空消息。它很好用。但是当我按下发送按钮太多次时,启动时一些请求响应200(确定)但是它响应500(内部服务器错误)。因此,像updateLastActivity一样持续发出的其他请求也会打扰。开发人员工具中的错误预览是:哎呀像出了问题。

注意:当我在核心php中创建这个聊天系统时,它工作正常。我也发送请求时没有内部服务器错误。

这是我正在使用的代码

    //the following code is used to send the message
 $(document).on('click','.send_message_bt',function(event){
     event.preventDefault();

        var id=$(this).data('id');
        var name=$(this).data('name');
        var message=$("#message_field-"+id).val();



    $.ajax({
        //headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
         headers: { 'X-CSRF-TOKEN': {!! json_encode(csrf_token()) !!} },
        url:'{{route('user.sendmessage')}}',
        type:'POST',
        data:{
          id:id,
        message:message
           },
        success:function(data,status){
        //clear the message field value
        $("#message_field-"+id).val('');

        //update the chat history
        fetchChatHistory(id,name);


    },
        error:function(response){
           if(response.status==401){
                  alert('You are not logged in!');
                  window.location=window.location.href;
                   }

           }

});

});

这是后端代码

public function sendMessage(Request $request){
    $message=new Userchatmessage();
     $message->message=$request->message;
     $message->sender_id=Auth::user()->id;
     $message->receiver_id=$request->id;
     $message->save();
     return response('success');
}

如何解决这个问题。

答案

我想这不是Laravel或其他什么问题,而是你的浏览器。每个浏览器都具有为特定域打开的最大同时连接数。

阅读更多关于这个问题herehere

如果您想制作实时聊天应用程序,请考虑使用NodeJSSocket.io之类的东西。

另一答案

异步和等待可以提供帮助。让一个异步函数

async function doAjax(){
    await runFirstAjaxCall();
    await runAfterFirstAjaxCallSuccess();
    ....
    ....
}
doAjax();

以上是关于如何在laravel 5.2中控制多个ajax请求的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 post 方法将数据从 ajax 传递到 laravel 5.2 控制器

如何从控制器获取记录到 Ajax laravel 5.2

如何通过邮件方法将数据从 ajax 传输到 laravel 5.2 控制器

Laravel 5.2 无法将跨域 jQuery 方法识别为 AJAX

处理来自 PHPUnit (Laravel 5.2) 的自定义异常

如何在 Laravel 5.2 中手动发送密码重置请求?