Почему вылетает ошибка 500?

Здравствуйте.
Делаю небольшой POST запрос через ajax. Локально (OpenServer) все хорошо отрабатывает. Залил на сервер - ошибку возвращает 500. Как я понял, это из за того что в метод getPrice приходят пустые значения в массиве $_POST. Если на сайте заполнить нужные поля, то все работает. Из за чего такое может быть? Локально при пустых значения все работает, на сервере - нет.
$('body').on('click', '.js-check-price', function () {
        let form = $('.js-form-add-order'),
            btn = $(this);
        btn.button('loading');
        $.ajax({
            method: "POST",
            url: '/getPrice',
            dataType: 'json',
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            cache: false,
            data: form.serialize(),
            success: function (result) {
                if(result['error'] === '0') {
                    console.log(result);
                } else {
                    console.log(result);
            }
        })
    });

web.php
Route::post('getPrice', 'cdekController@getPrice');

controller
public function getPrice(Request $request) {
        $sum = 0;
        foreach ($_POST["WareKeyItem"] as $k => $item) {
            $sum += $_POST["CostItem"][$k]*$_POST["AmountItem"][$k];
        }
        echo json_encode(array('error' => '0', 'price' => $sum));
        exit();
    }
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
yuraSco
@yuraSco Автор вопроса
Разобрался. OpenServer версия php 7, а на сервере 7.1. все из за A non-numeric value encountered. Это предупреждение появилось как раз в 7.1. Поэтому (int) решило проблему.
foreach ($_POST["WareKeyItem"] as $k => $item) {
                $sum += (int)$_POST["CostItem"][$k]*(int)$_POST["AmountItem"][$k];
            }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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