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

时间:2018-09-11 07:36:17

标签: ajax laravel laravel-5.2 laravel-5.1 jquery-ajaxq

我正在开发一个根据不同操作触发不同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');
}

如何解决此问题。

2 个答案:

答案 0 :(得分:1)

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

详细了解herehere这个问题。

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

答案 1 :(得分:1)

异步和等待可以提供帮助。让异步功能

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