AJAX и CI4 возвращают 500 ИЛИ НОЛЬ

#php #ajax #codeigniter #codeigniter-4

#php #аякс #кодовое устройство #кодовый конструктор-4

Вопрос:

У меня возникла уникальная проблема; У меня есть 3 вызова AJAX по всему моему коду, которые работают АБСОЛЮТНО нормально, подключаясь к Plaid и обрабатывая значения базы данных. Затем у меня есть 1, который возвращал 200, и результат был НУЛЕВЫМ-ТЕПЕРЬ он возвращает ошибку 500 и говорит, что есть проблема с сервером. Мне просто нужно отправить некоторые данные, чтобы что-то вычислить и вернуть, а у меня почти не осталось волос. Ниже приведен мой код:

Вызов AJAX:

 $('#calculateDebtPayoff').on('click', function() {    var owed = $("#dpoOwed").val();  var int = $('#dpoInterest').val();  var pymt = $('#dpoPayment').val();    $.ajax({  type: 'POST',  url: '/calculateLoanPayoff',  data: {owed: owed, interest: int, payments: pymt},  success: function(result) {  var response = JSON.parse(result);  console.log(response);  },  error: function(result) {  console.log('Error!: '   result);  }  }); });  

PHP-скрипт:

 public function calculateLoanPayoff() {  $response = [];  $months_left = 0;    $owed = $this-gt;request-gt;getVar('owed');  $interest = $this-gt;request-gt;getVar('interest');  $payments = $this-gt;request-gt;getVar('payments');    // Numner of Payments = (-log(1 - interest * remaining / payments)) / log(1   interest)  $months_left = (-log(1 - $interest * $owed / $payments)) / log(1   $interest);    $response['months_min'] = $months_left;  // OTHER VALUES WILL BE ADDED TO THE RESPONSE ARRAY AFTER I NAIL THIS THING    return json_encode($response); }  

Маршруты:

 $routes-gt;post('calculateLoanPayoff', 'DreamsCalculators::calculateLoanPayoff');  

Около 30 минут назад success функция вызова возвращалась 200 , но результат был НУЛЕВЫМ; 5 минут назад все это начало возвращаться 500 .

Я пытался:

 1. Using dataType: "json" 2. Using url: "lt;?= base_url(Class/method); ?gt;" 3. Passing headers: {'Content-Type: ', etc.} 4. My data is returned in PHP json_encode($response) 5. Tried contentType: false and dataType: false  

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

Любая помощь будет признательна!

Комментарии:

1. Я думаю, что вы определили переменную как «оплата» в ajax, но называете ее «платежи» в $payments = $this-gt;запрос-gt;gt;getVar («платежи»);

2. @ManashreeShah-спасибо тебе! Я изменил его, и статус вернулся к 200 значению, но в данных о результатах все равно остался НУЛЕВЫМ :/

3. Кроме того, не могли бы вы проверить, устанавливаются ли эти значения: var должен = $(«#dpoOwed»).val(); var int = $(‘#dpoInterest’).val(); var pymt = $(‘#dpoPayment’).val();?

4. @ManashreeShah — проверил все значения на стороне JS перед вызовом и на стороне PHP, и все установлено так, как должно быть. Сеть в браузере даже показывает, какие поля передаются.

5. является int ли ключевое слово js /зарезервированным словом? var int = $('#dpoInterest').val();

Ответ №1:

Обновить::

Очевидно, моя математика действительно была неправильной и возвращала NAN вызов через AJAX. Как только я узнал об этом, я изменил свой алгоритм, и возвращаемое значение возвращалось по мере необходимости и отображалось чудесно!

Всегда математика…

В случае, если кто-то имеет дело с подобным (расчет оставшихся месяцев в кредит), я передал string значения через AJAX и обработал их все в PHP-скрипте, но по-другому:

Новый Код Скрипта:

 public function calculateLoanPayoff() {  $response = array();    $owed = $this-gt;request-gt;getVar('owed');  $interest = $this-gt;request-gt;getVar('interest');  $payments = $this-gt;request-gt;getVar('payments');    $interest = ($interest / 100);  $half_a = -(1 - $interest * $owed / $payments);  $half_b = (1   $interest);    // Numner of Payments = (-log(1 - interest * remaining / payments)) / log(1   interest)  $months_left = log($half_a) / log($half_b);    $response['months_min'] = ceil($months_left);  // OTHER VALUES WILL BE ADDED TO THE RESPONSE ARRAY AFTER I NAIL THIS THING    return json_encode($response); }  

Спасибо за все предложения и помощь!