#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); }
Спасибо за все предложения и помощь!