Как принять данные на сервере методом POST с одинаковым ключом массива?

218
05 сентября 2018, 04:20

На странице есть фильтр. В этом фильтре я могу выбрать несколько свойств, например показать товары, которые имеют цвет: белый, красный, синий.

Я отправляю 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
Answer 1
$.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"
}
*/
Answer 2

Отправлять таким url

url: 'test.php?color[]=white&color[]=red&color[]=blue'

Тогда на сервере $_POST['color'] будет массивом

Answer 3

Как принять данные методом 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']);
READ ALSO
Ошибка при выполнении програмы

Ошибка при выполнении програмы

Всем привет, помоги решить данную проблемувот код: https://pastebin

205
Обработчик ошибок в контроллере Yii2

Обработчик ошибок в контроллере Yii2

У меня есть сайт, написаный на Yii2Сейчас пишу для него api

239
Product:find()-&gt;asArray-&gt;all(); как реализовать?

Product:find()->asArray->all(); как реализовать?

Не могу понять вот это: Product:find()->asArray->all(); Я понимаю какой результат будет после этого выражения но, как реализованы вот эти стрелочкиДа я знаю...

216