Передача массива по AJAX на PHP backend

146
30 июня 2019, 13:30

Использую AJAX и передаю массив с данными. Сам массив полностью рабочий (в плане, через js выводится, всё ок, но по ajax в php не передается, точнее передается, но не то, что находится в массиве, а string - 'array'). Как преобразовать массив? Код "отправки" через post выглядит так:

$("#blockFour input").each(function(index)
{
excon.push($(this).val());
});

jQuery.post("тут ссылочка на backend",{excon: excon}, function(data) 
{
alert(data);
});

Потом в backend пишу следующее:

if($_POST['excon']) 
{
$excon = $_POST['excon'];
echo $excon;
}

И на выходе получаю ответ "Array". Как преобразовать массив, чтобы он адекватно прошел через ajax?

Answer 1

В jQuery Вы создаёте массив и пушите значения. Затем в POST передаёте не переменную, а массив.

Соответственно, и в PHP Вы получаете из POST['excon'] массив.

Проверьте, что пришло в $excon

var_dump($excon);

Вероятно, Вы получите на странице что-то вроде этого (строка может быть любой в подобной форме):

array(3) { [0]=> string(16) "Значение" [1]=> string(17) "Значение2" [2]=> string(17) "Значение3" }

Следовательно, Вы можете получать значения через $excon[0], $excon[1], $excon[2] или перебрать каждое значение через foreach:

foreach($excon as $var=>$val){
    echo $val . "<br/>";
}
Answer 2
// index.php
var arr = [
    'apple',
    'orange',
    'lemon'
];
$.ajax({
    type: 'POST',
    url: './array.php',
    data: JSON.stringify(arr),
    dataType: 'json',
    success: function(text) {
        console.log(text);
    },
    error: function(err) {
        throw err;
    }
});

Есть небольшая особенность в получении POST:

// array.php
<?php
    // получаем данные из POST
    $json = json_decode(file_get_contents('php://input'));
    // отправляем их обратно в виде json
    header('Content-Type: application/json');
    echo json_encode($json);
READ ALSO
Из-за чего на самодельном движке происходит это?

Из-за чего на самодельном движке происходит это?

В общем, при написании своего движка, столкнулся с проблемой, заключается она в том, что написав такой простенький код:

117
Как защитить Ajax запрос от спама.

Как защитить Ajax запрос от спама.

У меня такая проблема получиласьЕсть простенький скрипт который анализирует некие данные стороннего сайта и как только там они поменялись...

117