Моя таблица данных не обновляется для запроса с предложением where. Запрос запрашивает данные в соответствии с запросом, но данные не обновляются для результата запроса. Я использую Laravel 5.8 с пакетом данных Яджрава. Успех Ajax получил правильные значения JSON.

Мой запрос ajax:

$(document).on('click', '#btnShowToday', function(e) {
  e.preventDefault();

  let currentDate = $('#datepicker').val()

  $.ajax({
      type: "get",
      url: '/currentDateAppointment',
      data: {
        currentDate: currentDate
      }
    })
    .done(function(res) {
      console.log(res);
    })
    .fail(function(error) {
      console.log(error);
    });
})

Мой метод Контроллера:

    public function currentDateAppointments(Request $request)
    {
        $date = $request->get('currentDate');

        $getData = DB::table('customers')
        ->join('jobs', 'jobs.id', '=', 'customers.id')
        ->select('jobs.id', 'firstname', 'lastname', 'vehiclemodel', 'date', 'time', 'payment_status', 'amount')
        ->where('date', '=', $date)
        ->get();

        $datatable = DataTables::of($getData)->make(true);
        return $datatable;
    }

Ответ ajax:

enter image description here

Первая инициализация данных для получения всех данных из базы данных:

 $('#appointment-datatable').DataTable({
                processing: true,
                serverSide: true,
                ajax: '/get_appointment_data',
                columns: 
                    [
                      {
                        data: 'id', 
                        name: 'id'
                      },
                      {
                        data: 'firstname', 
                        name: 'firstname'
                      },
                      {
                        data: 'lastname', 
                        name: 'lastname'
                      },
                      {
                        data: 'vehiclemodel', 
                        name: 'vehiclemodel'
                      },
                      {
                        data: 'date', 
                        name: 'date',
                        searchable: true
                      },
                      {
                        data: 'time', 
                        name: 'time'
                      },
                      {
                        data: 'payment_status', 
                        name: 'payment_status'
                      },
                      {
                        data: 'amount', 
                        name: 'amount'
                      },
                      {
                        data: null,
                        orderable: false,
                        render: function (data, type, full, meta) 
                        {
                            let id = data['id']
                            return '<button id="mdButtonViewService" value="'+id+'" class="btn btn-sm btn-success">View Services</button>'       
                        }
                      },
                      {
                        data: null,
                        orderable: false,
                        render: function (data, type, full, meta) 
                        {
                            let id = data['id']
                            return '<button id="mdButtonAssign" value="'+id+'" class="btn btn-sm btn-info">Assign</button> <button id="mdButtonDelete" value="'+id+'" class="btn btn-sm btn-danger"><i class="fa fa-trash"></i></button>'       
                        }
                      }
                    ]

              })

Почему данные не показывают результат запроса? Функции ajax.reload () или draw () не работают. как это исправить? Спасибо.

0
Hashan 20 Дек 2019 в 16:16

4 ответа

Использовать DATE_FORMAT (дата, '% d /% m /% Y% H:% i:% s') вместо текущего сравнения?

0
Randeepnath 20 Дек 2019 в 16:30

«Uncaught ReferenceError: $ не определено» Эта ошибка возникает из-за того, что вы, скорее всего, не импортировали библиотеку.

<script src="jquery-3.4.1.min.js"></script>
0
work service 20 Дек 2019 в 17:37

Похоже, что ajax не передает переменные, попробуйте следующее, чтобы проверить, получает ли ajax значения

var firstname =$("firstname").val(); 
    if(username.trim() == '' ){
        alert('Empty.');
        $('#inputName').focus();
        return false;
    }else{
        return true;
    }

Вы можете сделать что-то вроде этого, чтобы перезагрузить, под ваш запрос AJAX.

 load();

 function load()
 {
  $.ajax({
   url:"/currentDateAppointment",
   method:"POST",
   success:function(data)
   {
    $('').html(data);
   }
  })
 }

РЕДАКТИРОВАТЬ: включая мои коды в ваш,

$(document).on('click', '#btnShowToday', function(e) {
  e.preventDefault();

  let currentDate = $('#datepicker').val()

  $.ajax({
      type: "get",
      url: '/currentDateAppointment',
      data: {
        currentDate: currentDate
      }
    })
    .done(function(res) {
      console.log(res);

    })
    .fail(function(error) {
      console.log(error);
    });
load();
})

 function load()
 {
  $.ajax({
   url:"/currentDateAppointment",
   method:"POST",
   success:function(data)
   {
    $('#appointment-datatable').html(data);
   }
  })
 }
0
Dlk 20 Дек 2019 в 21:25

При ajax успешном вызове обновите таблицу с запрошенными данными. Проверьте мой ответ и дайте мне знать.

$(document).on('click', '#btnShowToday', function(e) {
  e.preventDefault();

  let currentDate = $('#datepicker').val()

  $.ajax({
      type: "get",
      url: '/currentDateAppointment',
      data: {
        currentDate: currentDate
      }
    })
    .done(function(res){ 
       json_res = JSON.parse(res.data[0]);
       var table = $('#appointment-datatable').DataTable();
       table.rows.add(json_res).draw();
    }) 
    .fail(function(error) {
      console.log(error);
    });
})
0
Marios Nikolaou 20 Дек 2019 в 23:11