Код исправлен из пользовательского фильтра Datatables не работает

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

0
задан OldGuy 14 April 2019 в 09:09
поделиться

2 ответа

Проблема в вашей функции getAge(), и это должно быть очевидно, если вы посмотрите на столбец возраста в вашей таблице. Ваш код:

function getAge($date) 
{ 
    return intval(substr(date('Ymd') - date('Ymd', strtotime($date)), 0, -4));
}

Функция date [) PHP возвращает строку в формате 'YYYMMDD'. У вас их два, и вы их вычитаете. Предположим, что это '20190414' и '20020321', вычитание их приведет к 170093, а если взять последние два символа с substr(), то вам будет 93 для кого-то, кто родился в 2002 году. Вы не заметили что?

Итак, давайте напишем лучшую getAge() функцию. Работать точно со временем сложно. Однако на самом деле внутри PHP есть функция для вычисления разницы дат:

https://www.php.net/manual/en/datetime.diff.php

Если мы используем это для создания функции, мы получим:

function getAge($dateStr) 
{ 
    $birthDate = new DateTime($dateStr); // check the valid formats in the manual!
    $currentDate = new DateTime();
    return $birthDate->diff($currentDate, true)->y; // return difference in years
}

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

Это работает для вас? В вашем коде могут быть и другие ошибки, хороший способ отладки ошибок Javascript - взглянуть на ваши инструменты разработчика .

0
ответ дан KIKO Software 14 April 2019 в 09:09
поделиться

Оказывается, что я должен был изменить порядок, в котором я добавил внешний jQuery/начальную загрузку/таблицы данных js сценарии.

спасибо за Вашу справку.

0
ответ дан OldGuy 15 April 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: