Post/Put multipart/form-data

169
.
Интересное поведение...
Это не суть важно, но скажу: юзаю бандл от симфони FOSRestBundle.

Есть два метода в контроллере post и put. В них передаю данные с form-data через postman.
В заголовке передается Content-type: application/json.
В метод сделан просто вывод данных с $_REQUEST...

Теперь самое интересное:
При запросе POST данные приходят массивом.
При запросе PUT данные вообще не приходят. Если сделать Content-type: text, то приходит строка запроса.

Может кто-то знает от чего может быть такое поведение?
Как бы заголовки в оба метода идут одинаковые и работать должны одинаково.

Еще при Content-type: application/json и попытке получить данные через Request от Symfony прибегает ошибка: Invalid json message received
.
# UJIN (25.07.2017 / 13:53)
При запросе PUT данные вообще не приходят. Если сделать Content-type: text, то приходит строка запроса.
Так ты похоже сам и ответил, значит передаешь не json. Сам $.ajax покажи, или чем ты там PUT передаешь.
.
Добавлено: 26.07.2017 / 12:07
не, я в заголовках прописывал специально Content-type: application/json.. Грит, что невалидный json.
Передаю через postman. Там есть возможность заполнить табличку form-data с параметрами..
Два одинаковых запроса отправляю на POST и PUT. POST обрабатывает, PUT нет. При этом и обработчики у них одинаковые =)

Добавлено: 26.07.2017 / 17:37
текст ошибки (+/-)
.
(\/)____o_O____(\/)
UJIN, огонь лог, как будто все сломалось
.
kantry
UJIN, Не знаю как ты post-ом массив получаешь, но включить консоль в браузере и поглядеть что тебе вместо объекта json приходит, надо
У себя пробовал все работает, без разницы какой метод, думаю в симфонии не намного отличается))
$(document).ready(function () {
    $.ajax({
        url: '1.php',
        type: 'PUT',
        data: "name=sender&location=path",
        success: function(data) {
            alert('Load was performed.');
            }
            }
        );
});

Передатчик(1php)
header('Content-type: application/json');
$put = ['sender' => 'UJIN',
        'path' => 'http://johncms.com/'
        ];
$method = ['method' => $_SERVER['REQUEST_METHOD']];
echo json_encode([$method, $put]);
.
да, действительно, аяксом запрос отправлял и все нормально работает
странное поведение постмена
походу, какие-то заголовки не доотправляю
Всего: 6
Фильтр по автору
Скачать тему