Как отправить массив данных в бэкэнд (php) через ajax - PullRequest
0 голосов
/ 26 апреля 2018

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

        var dateTime = [];
        $("#employeeData > tr").each(function(dateIndex, date) {
            dateTime[date.id] = [];
            $("#" + date.id + " :input").each(function(inputIndex, inputTime) {
                dateTime[date.id].push($(inputTime).val())
            });
        });
        var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
        console.log(dateTime);
        $.post('employee',
            {
                dates: dateTime,
                _token: CSRF_TOKEN
            }, function(response) {
                console.log(response);
            }
        );
        });
    Route::post('/employee', 'EmployeesController@updateRecords');

    public function updateRecords(Request $request)
    {
        return $request->dates;
    }
    // this is a console.log of the dateTime, each date has 4 inputs 
    //associated with it
    [2017-11-02: Array(4), 2017-11-03: Array(4), 2017-11-06: Array(4), 2017- 
    11-07: Array(4), 2017-11-08: Array(4), …]

Все это происходит, когда jquery обрабатывает событие click.

1 Ответ

0 голосов
/ 26 апреля 2018

Невозможно передать массив, как он есть в посте, он должен быть конвертирован.

Просто закодируйте ваш массив как строку JSON и декодируйте его в бэкэнд.

var dateTime = [];
    $("#employeeData > tr").each(function(dateIndex, date) {
        dateTime[date.id] = [];
        $("#" + date.id + " :input").each(function(inputIndex, inputTime) {
            dateTime[date.id].push($(inputTime).val())
        });
    });
    var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
    console.log(dateTime);
    var jsonString = JSON.stringify(dateTime);
    $.post('employee',
        {
            dates: jsonString,
            _token: CSRF_TOKEN
        }, function(response) {
            console.log(response);
        }
    );
    });

в вашем PHP, декодируйте строку JSON:

$dates = json_decode(stripslashes($_POST['dates']));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...