首页 > 解决方案 > 带有 Ajax 请求的 Laravel 有时会成功有时不会

问题描述

我是一名初级程序员,我的代码有一些问题。当我在 laravel 5.7 中使用 Ajax 调用数据时,有时成功并获得了数据。但是当我再次尝试刷新时,有时不完整并且在我的 php 日志中出现错误 500。有时当我再次尝试刷新数据时成功..有人可以帮助我吗?谢谢

这是示例错误日志: 我的日志上的示例错误

再次刷新,日志工作正常 在此处输入图像描述

..这是我认为的代码

其中一个例子

  {{-- GROUP CHAT FRIEND --}}

@auth

  load_grup();
  //
  function load_grup()
  {

    var gpage = {{ (isset($_GET['gpage'])) ? $_GET['gpage'] : '0' }}

    $.ajax({
        type : 'GET',
        url : "{{ url('json/group_chat?gpage=') }}"+parseInt(gpage),
        success : function (data) {


          var options = "";
          var arsip = "";
          for (var i = 0; i < data.length; i++) {


            if(data[i].status == '1')
            {
              status = '<span class="ml-auto badge badge-success">Online</span>';
            }
            else
            {
              status = '<span class="ml-auto badge badge-secondary">Offline</span>';
            }

            options += `

            <tr class="`;
            if(data[i].count > 0)
            {
              options += 'bg-secondary';
            }
            options +=`">
              <td> </td>
              <td>
               <a href="{{url('chat/group')}}/`+data[i].room_id+`" class="font-weight-bold text-dark">  `+ data[i].name +` </a> <span class="badge badge-danger"> `+data[i].count+` </span> <br>
               <a href="{{url('chat/group')}}/`+data[i].room_id+`" class="text-dark">
                `;

                if(data[i].body != null)
                {

                  options += ``+data[i].body+``;
                }

            options +=`
                </a> <br>

                `+data[i].time+`
              </td>
            </tr>

            `;


            arsip += `
            <li class="list-group-item `;

            if(data[i].count > 0)
            {
              arsip += 'bg-secondary';
            }
            arsip += `">
              <div class="row">
                <div class="col-md-2">
                </div>
                <div class="col-md-10">
                  <span class="font-weight-bold">
                    <a href="{{url('chat/group')}}/`+data[i].room_id+`" class="text-dark"> `+data[i].name+` </a>
                    <span class="badge badge-danger">`+data[i].count+`</span>

                    <div class="row">
                      <label for="" class="ml-auto mr-3">`+data[i].time+`</label>
                    </div>
                  </span>
                  <article class="article">
                  <a href="{{url('chat/group')}}/`+data[i].room_id+`" class="text-dark">  `;

                  if(data[i].body != null)
                  {

                    arsip += ``+data[i].body+``;
                  }

                  arsip += ` </a>
                  </article>
                </div>
              </div>

            </li>
            `;
          }

          if(data[0].pagination != 0)
          {
            $("#group_chat-list").html(options);
            $("#arsip-group_chat").html(arsip);
          }
            // CREATE PAGINATION

            var before_page = {{(isset($_GET['gpage']) ? $_GET['gpage'] : '0' )}};

            var page_chat = ``;

            page_chat+=`<a `;

            var be_page = parseInt(before_page);

            if(be_page == 0)
            {

              page_chat +=`href="{{url('chat/group')}}" class="btn btn-link text-secondary" style="cursor:default;"`;
            }
            else if(be_page > 0)
            {
              page_chat +=`href="{{url('chat/group')}}`+ (parseInt(before_page-1) == 0 ? '' : `?gpage=`+parseInt(before_page-1)) +`" class="btn btn-link `+(parseInt(before_page-1) == 0 ? 'text-secondary' : '')+`"`;

            }

            page_chat += `>Sebelumnya</a>
            <a `;

            var be_page = parseInt(before_page);

            if(parseInt(before_page * 5) >= data[0].pagination)
            {
              page_chat += `class="btn btn-link text-secondary" style="cursor:default;"`;
            }
            else
            {
              page_chat += `class="btn btn-link" href="{{url('chat/group')}}?gpage=`+ (parseInt(before_page+1) == 1 ? 2 : parseInt(before_page+1) ) +`"`;
            }

            page_chat += `>Selanjutnya</a>
            `;

            if(data[0].pagination >= 5)
            {
              $("#page_group").html(page_chat);
            }

          }
    });

  }
</script>

@endauth

然后我的控制器

public function group_chat(){
$number = 0;
if(isset($_GET['gpage']))
{
  $number = $_GET['gpage']-1;

}
// LIMIT 5
$offset = 5;

// CREATE PAGINATE GROUP
$room_names = User_room::select("users__room.id as id")
->join('users__room_chat_partisipants', 'users__room_chat_partisipants.user_room_id', '=', 'users__room.id')
->leftjoin('users__room_chat', 'users__room_chat.user_room_id', '=','users__room.id')
->leftjoin('users__room_chat_documentation', 'users__room_chat_documentation.user_room_chat_id', '=','users__room_chat.id')
->where('users__room.name', 'not like', '%-%')
->where('users__room_chat_partisipants.user_id', '=', Auth::user()->id)
->orderBy('users__room_chat.id', 'desc')
->groupBy('users__room.id')
->skip($offset * $number)
->take($offset)
->get();


$count_page = User_room::select("users__room.id")
->join('users__room_chat_partisipants', 'users__room_chat_partisipants.user_room_id', '=', 'users__room.id')
->leftjoin('users__room_chat', 'users__room_chat.user_room_id', '=','users__room.id')
->leftjoin('users__room_chat_documentation', 'users__room_chat_documentation.user_room_chat_id', '=','users__room_chat.id')
->where('users__room.name', 'not like', '%-%')
->where('users__room_chat_partisipants.user_id', '=', Auth::user()->id)
->orderBy('users__room_chat.id', 'desc')
->groupBy('users__room.id')
->get();

$x= 0;
foreach($room_names as $field)
{
  $room_fix = User_room_chat::select('*')
  ->where('user_room_id', $field['id'])
  ->orderBy('users__room_chat.id','desc')
  ->first();

  $room_name[$x]['id_chat'] = $room_fix['id'];

  $x++;
}

$room_namex = array();
$k = 0;
rsort($room_name);
foreach($room_name as $chat_id)
{
  $room_fix = User_room::select('users__room_chat.body', 'users__room.id as room_id', 'users__room_chat.created_at', 'users__room.name')
  ->leftjoin('users__room_chat', 'users__room.id', '=', 'users__room_chat.user_room_id')
  ->where('users__room_chat.id', $chat_id['id_chat'])
  ->orderBy('users__room_chat.id','desc')
  ->first();

  $chat_notif = User_room_chat::select("id")
  ->where('user_room_id', $room_fix['room_id'])
  ->where('user_id', '!=', Auth::user()->id)
  ->where('open', '=', '0')
  ->count();

  $room_namex[$k]['body'] = $room_fix['body'];

  $room_namex[$k]['room_id'] = $room_fix['room_id'];

  $room_namex[$k]['time'] = '';

  if($room_fix['created_at'] != null)
  {
    $room_namex[$k]['time'] = $room_fix['created_at']->diffForHumans();
  }

  $room_namex[$k]['name'] = $room_fix['name'];

  $room_namex[$k]['count'] = $chat_notif;

  $k++;
}

$room_namex[0]['pagination'] = COUNT($count_page);

return response()->json($room_namex);
}

标签: jqueryjsonajaxlaravel

解决方案


您可以调试将其添加到您的 ajax 函数的错误:

                    error: function(xhr, error){
                        console.debug(xhr);
                        console.debug(error);
                    }

这将准确显示后端发生的情况。希望这对您有所帮助。


推荐阅读