Почему все тело веб-страницы загружается в таблицу вместо данных при извлечении данных из базы данных с использованием ajax в Larvel - PullRequest
0 голосов
/ 29 октября 2018

У меня есть эта таблица, показывающая все записи инкассации, она работает нормально, но когда я пытаюсь получить строки из базы данных в пределах определенного диапазона дат и отобразить ее в той же таблице, загружается все тело веб-страницы в таблицу вместо строк из базы данных.

Пожалуйста, смотрите изображение ниже:

enter image description here

это моя функция из tableController.php

 function encashmentRecord_DateRange(Request $request){
    if($request->ajax())
    {
      $start = $request->get('startDate');
      $end = $request->get('endDate');
      $data = DB::table('encashment_requests')->whereBetween('date',[$start,$end])->get();
      return view('incashment',compact('data'));
    }
}

скрипт в моем encashment.blade.php

$(document).ready(function(){

   $('#dataTable').DataTable();

   $('#start_date').datepicker({
     format:'yyyy-mm-dd',
     autoclose:true
   }).val();

   $('#end_date').datepicker({
       format:'yyyy-mm-dd',
       autoclose:true
   }).val();

   var range = document.getElementById('btnrange');
   range.addEventListener('click',function(){
     var start_date = $('#start_date').val();
     var end_date =$('#end_date').val();
     alert(end_date);
     $('#dataTable').DataTable().destroy();
     listDateRange(start_date,end_date);
   },false);

   function listDateRange(startDate,endDate){
     $.ajax({
       method: 'GET',
       url : "{{ route('encashmentRecord.action') }}",
       data: {startDate:startDate, endDate:endDate},
       success:function(data)
       {
         alert(data);
         $('#dataTable').html(data);
       }
     })
   }
});

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Возможно, я нашел решение своей проблемы, хотя это может выглядеть долго. Но это сработало. Я сделал другое представление, encashmentRecord.blade, содержащее только таблицу, поэтому в контроллере вместо возврата данных в incashment.blade я вернул данные в новое представление, encashentRecord.blade, и я использую "@include (' encashmentRecord ') "в моем incashment.blade для отображения таблицы.

encashmentRecord.blade.php

<div class="card-body">
 <table id="dataTable" class="table table-striped table-bordered">
   <thead>
    <tr>
     <th>Name</th>
     <th>Account ID</th>
     <th class="sort">Date</th>
     <th>Desired Ammount</th>
     <th>Destination</th>
     <th>Status</th>
    </tr>
   </thead>
   <tbody>
    @if(isset($data))
     @foreach($data as $row)
      <tr>
       <td>{{ $row->account_name}}</td>
       <td>{{ $row->account_id}}</td>
       <td>{{ $row->created_at}}</td>
       <td>Php {{ $row->requested_ammount}}</td>
       <td>{{ $row->destination}}</td>
       <td>{{ $row->status}}</td>
      </tr>
     @endforeach
   @else
    <tr>
     No Data
    </tr>
  @endif
 </tbody>
</table>

и это incashment.blade.php

<div class="row">
  <div class="col-xl-3 ">
    <input type="text" name="query" id="start_date" class="form-control input_daterange">
  </div>
  <div class="col-xl-3 ">
    <input type="text" name="query" id="end_date" class="form-control">
  </div>
  <div class="col-xl-3 ">
    <button class="btn" id="btnrange">Go</button>
  </div>
  </div>

  <div class="card" style="margin-bottom: 0px">
     <div class="card-header">
         Encashment Record
     </div>

     <div id="table_data">
        @include('tables.encashmentRecord')
     </div>
  </div>

Я просто меняю представление в моем возврате на контроллер

  return view('tables.encashmentRecord',compact('data'));
0 голосов
/ 30 октября 2018

Если вам нужны только данные, вы не должны возвращать view () с вашего контроллера.

Попробуйте заменить его следующим: return response()->json($data, 200);

...