На странице есть фильтр. В этом фильтре я могу выбрать несколько свойств, например показать товары, которые имеют цвет: белый, красный, синий.
Я отправляю Ajax запрос на сервер:
var data = {
color: ["white","red", "blue"]
};
$.ajax({
url: 'test.php',
type: "POST",
data: data,
success: function (results) { console.log(results) },
dataType: 'json',
traditional: true
});
На сервере мне нужно принять эти данные:
$color = $_POST['color'];
Отобразится последний из списка этих цветов - blue.
Как принять данные методом POST так, чтобы получить весь массив цветов?
Спасибо!
P.s. Нашел одно из решений самостоятельно. Данные можно получить в виде строки:
$post = file_get_contents('php://input'); //color=white&color=red&color=blue
$.post("test.php", {
color: ["white", "red", "blue"]
});
var_dump($_POST['color']);
/*
array(3) {
[0]=> string(5) "white"
[1]=> string(3) "red"
[2]=> string(4) "blue"
}
*/
Отправлять таким url
url: 'test.php?color[]=white&color[]=red&color[]=blue'
Тогда на сервере $_POST['color'] будет массивом
Как принять данные методом POST так, чтобы получить весь массив цветов?
Вот так отправить с клиента:
$(document).ready(function() {
$('button').on('click', function() {
var ar = ['red', 'blue', 'green']; // Ваш массив
$.ajax({
// Для примера jsonplaceholder
url: 'https://jsonplaceholder.typicode.com/posts', // здесь ваш test.php
// оберка в JSON
data: {
colors: ar,
},
type: "POST",
success: function(results) {
console.info(results)
},
dataType: 'json',
traditional: true
})
})
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="">Send</button>
И принять так в test.php:
$colors = json_decode($_POST['colors']);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости