Laravel - daterangepicker с Ajax возвращает статус внутренней ошибки сервера 500

Поэтому я добавляю daterangepicker с Ajax в свой проект Laravel, на моем лезвии у меня есть daterangepicker, похожий на календарь, для выбора даты, а также для обновления и фильтрации. Теперь, когда я нажимаю «Обновить», он обновляет текущую выбранную дату, но когда я фильтрую, ничего не происходит. Когда я Проверьте элемент в моем браузере Safari, он показывает мне: Не удалось загрузить ресурс: сервер ответил со статусом 500 (внутренняя ошибка сервера).

Вот мой DateRangeController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Post;
use Auth;

class DateRangeController extends Controller
{
    public function index()
    {
        $posts = Post::where('user_id', Auth::id());
        return view('daterange')->with('posts', $posts);
    }

    public function fetch_data(Request $request)
    {
     if ($request->ajax())
     {
      if ($request->from_date != '' && $request->to_date != '')
      {
       $data = DB::table('posts')
         ->whereBetween('date', array($request->from_date, $request->to_date))
         ->get();
      }
      else
      {
       $data = DB::table('posts')->orderBy('date', 'desc')->get();
      }
      echo json_encode($data);
     }
    }
}

?>

Вот мой daterange.blade.php со скриптом

<!DOCTYPE html>
<html>
 <head>
  <title>Date Range Fiter Data in Laravel using Ajax</title>
  <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  <link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/css/bootstrap-datepicker.css" />
  <script src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <script src = "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/js/bootstrap-datepicker.js"></script>
 </head>
 <body>
  <br />
  <div class = "container box">
   <h3 align = "center">Date Range Fiter Data in Laravel using Ajax</h3><br />
   <div class = "panel panel-default">
    <div class = "panel-heading">
     <div class = "row">
      <div class = "col-md-5">Sample Data - Total Records - <b><span id = "total_records"></span></b></div>
      <div class = "col-md-5">
       <div class = "input-group input-daterange">
           <input type = "text" name = "from_date" id = "from_date" readonly class = "form-control" />
           <div class = "input-group-addon">to</div>
           <input type = "text"  name = "to_date" id = "to_date" readonly class = "form-control" />
       </div>
      </div>
      <div class = "col-md-2">
       <button type = "button" name = "filter" id = "filter" class = "btn btn-info btn-sm">Filter</button>
       <button type = "button" name = "refresh" id = "refresh" class = "btn btn-warning btn-sm">Refresh</button>
      </div>
     </div>
    </div>
    <div class = "panel-body">
     <div class = "table-responsive">
      <table class = "table table-striped table-bordered">
       <thead>
        <tr>
         <th width = "35%">Broj Kesice</th>
         <th width = "50%">Ime</th>
         <th width = "15%">Broj Telefona</th>
        </tr>
       </thead>
       <tbody>
            @foreach($posts as $post)
                <tr>
                    <td>{{$post->br_kesice}}</td>
                    <td>{{$post->ime}}</td>
                    <td>{{$post->br_telefona}}</td>
                </tr>
            @endforeach
       </tbody>
      </table>
      {{ csrf_field() }}
     </div>
    </div>
   </div>
  </div>
 </body>
</html>

<script>
$(document).ready(function(){

 var date = new Date();

 $('.input-daterange').datepicker({
  todayBtn: 'linked',
  format: 'yyyy-mm-dd',
  autoclose: true
 });

 var _token = $('input[name = "_token"]').val();

 fetch_data();

 function fetch_data(from_date = '', to_date = '')
 {
  $.ajax({
   url:"{{ route('daterange.fetch_data') }}",
   method:"POST",
   data:{from_date:from_date, to_date:to_date, _token:_token},
   dataType:"json",
   success:function(data)
   {
    var output = '';
    $('#total_records').text(data.length);
    for(var count = 0; count < data.length; count++)
    {
     output += '<tr>';
     output += '<td>' + data[count].post_br_kesice + '</td>';
     output += '<td>' + data[count].post_ime + '</td>';
     output += '<td>' + data[count].date + '</td></tr>';
    }
    $('tbody').html(output);
   }
  })
 }

 $('#filter').click(function(){
  var from_date = $('#from_date').val();
  var to_date = $('#to_date').val();
  if (from_date != '' &&  to_date != '')
  {
   fetch_data(from_date, to_date);
  }
  else
  {
   alert('Both Date is required');
  }
 });

 $('#refresh').click(function(){
  $('#from_date').val('');
  $('#to_date').val('');
  fetch_data();
 });


});
</script>

А вот мои маршруты для диапазона дат

Route::get('/daterange', 'DateRangeController@index');
Route::post('/daterange/fetch_data', 'DateRangeController@fetch_data')->name('daterange.fetch_data');

Любые решения этой проблемы? Мне нужно показать сообщения за выбранную дату

Причина может быть какая угодно, но сначала попробуйте вернуть ответ контроллера, а не эхо: return json_encode($data); Лучше бы return response()->json(['type' => 'success', 'data' => $data])

Dimitri Mostrey 17.07.2019 01:48

Каков URL-адрес запроса в сетевых инструментах разработки, когда вы выполняете действие?

mohamed hassan 17.07.2019 02:08

Я сделал return json_encode($data); и return response()->json(['type' => 'success', 'data' => $data]);, но ничего не происходит, все остается прежним..

Milos 17.07.2019 02:14

Когда я выполняю действие, оно возвращает мне { "message": "SQLSTATE [42S22]: столбец не найден: 1054 Неизвестная дата столбца в "условии заказа" (SQL: выберите * из posts порядка по date описанию)", "исключение ": "Illuminate\\Database\\QueryException", "file": "/Applications/XAMPP/xamppfiles/htdocs/monokl/vendor/laravel‌​/framework/src/Illum‌​inate/Database/Conne‌​ction.php", "строка": 664, "трассировка": [ ...

Milos 17.07.2019 02:16

Оуу, я только что исправил это, в запросе URL было указано неизвестная дата столбца, и я исправил это с помощью created_at и его работы. Но теперь проблема в том, что он возвращает мне Undefined в <table> для сообщений

Milos 17.07.2019 02:18

Итак, моя функция в DateRangeController теперь выглядит так: ``` public function fetch_data(Request $request) { if ($request->ajax()) { if ($request->from_date != '' && $request->to_date! = '') { $data = DB::table('posts') ->whereBetween('created_at', array($request->from_date, $request->to_date)) ->get(); } else { $data = DB::table('сообщения')->orderBy('created_at', 'desc')->get(); } вернуть json_encode($data); } } } ``` но сейчас он ничего не возвращает мне, когда я нажимаю фильтр

Milos 17.07.2019 02:21

Добавьте console.info(data) в Success: функция проверьте, есть ли ответ!

mohamed hassan 17.07.2019 02:24

Но я думаю, что у меня нет успеха: функция...

Milos 17.07.2019 02:26

В аяксе....

mohamed hassan 17.07.2019 02:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
966
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я исправил все это на created_at, а не на дату, и теперь мой DateRangeController выглядит так:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Post;
use Auth;

class DateRangeController extends Controller
{
    public function index()
    {
        $posts = Post::where('user_id', Auth::id());
        return view('daterange')->with('posts', $posts);
    }

    public function fetch_data(Request $request)
    {
     if ($request->ajax())
     {
      if ($request->from_created_at != '' && $request->to_created_at != '')
      {
       $data = DB::table('posts')
         ->whereBetween('created_at', array($request->from_created_at, $request->to_created_at))
         ->get();
      }
      else
      {
       $data = DB::table('posts')->orderBy('created_at', 'desc')->get();
      }
      return json_encode($data);
     }
    }
}

?>

теперь он возвращает мне все сообщения, но как undefined, а по запросу сетевого URL возвращает мне настоящие, а не undefined. Любые решения?

должно быть if ($request->from_date != '' && $request->to_date != '') как вы отправили данные запроса данных: {from_date:from_date, to_date:to_date, _token:_token} и также измените в запросе в "whereBetween"

mohamed hassan 17.07.2019 02:29

да, я изменил его, но когда я меняю, он ничего не показывает мне, когда я выбираю какую-то дату, но когда я обновляю, он показывает мне все 14 сообщений, но он показывает меня как undefined для каждого сообщения-> br_kesice, $post-> ime.. .

Milos 17.07.2019 02:44

Можешь выложить проект на гитхаб?!

mohamed hassan 17.07.2019 02:46

я сделаю это через минуту

Milos 17.07.2019 02:51

Пожалуйста, загрузите файл базы данных sql

mohamed hassan 17.07.2019 03:06

Как я могу его загрузить, я загрузил весь проект, используя начальную фиксацию в Microsoft Visual и команды github для подтягивания проекта.

Milos 17.07.2019 03:13

Добавьте файл данных sql в файлы проекта, затем добавьте, зафиксируйте и нажмите

mohamed hassan 17.07.2019 03:15
php artisan db:seed ?
Milos 17.07.2019 03:23

Проверьте мой новый ответ!

mohamed hassan 17.07.2019 03:49

Ваша проблема в функции успеха, вы пытаетесь обработать свойство не найдено, это полный тег скрипта


<script>
    var _token = $('input[name = "_token"]').val();
    $(document).ready(function(){

 var date = new Date();

 $('.input-daterange').datepicker({
  todayBtn: 'linked',
  format: 'yyyy-mm-dd',
  autoclose: true
 });


 //if you leave this ,will load the data if you remove this  remove comment  from line number 43 to 49 to load data :)
        fetch_data();


 $('#filter').click(function(){
  var from_date = $('#from_date').val();
  var to_date = $('#to_date').val();
  if (from_date != '' &&  to_date != '')
  {
   fetch_data(from_date, to_date);
  }
  else
  {
   alert('Both Date is required');
  }
 });

 $('#refresh').click(function(){
  $('#from_date').val('');
  $('#to_date').val('');
  fetch_data();
 });


});
function fetch_data(from_date = '', to_date = '')
{
    $.ajax({
        url:"{{ route('daterange.fetch_data') }}",
        method:"POST",
        data:{from_date:from_date, to_date:to_date, _token:_token},
        dataType:"json",
        success:function(data)
        {
            var output = '';
            $('#total_records').text(data.length);
            $.each(data,function (key,value) {
                console.info(value)
                output += '<tr>';
                output += '<td>' + value.br_kesice + '</td>';
                output += '<td>' + value.ime + '</td>';
                output += '<td>' + value.created_at + '</td></tr>';
            });
            $('tbody').html(output);
        }
    })
}
</script>

Удалить репозиторий, Удачи тебе с твоим проектом :)

Другие вопросы по теме