Итак, у меня есть этот код:
axios({ method: 'post', url, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: { json, type, } })
Первоначально у меня был обычный axios.post
но я изменил это, потому что думал, что это может быть проблема с заголовком. Однако я все еще ничего не обнаруживаю в своем $_REQUEST
или $_POST
. Тем не менее, он принимает данные в file_get_contents("php://input")
.
Любая идея, что не так?
редактировать
Хорошо, я думаю, что знаю, что случилось. Он отправляет его как объект json, поэтому его можно читать только в входе php: //. Как изменить его на обычную строку в axios?
Из документации (я не сохранил ссылки в цитируемом материале):
Использование формата application / x-www-form-urlencoded
По умолчанию axios сериализует объекты JavaScript в JSON. Чтобы отправить данные в формате application / x-www-form-urlencoded, вы можете использовать один из следующих вариантов.
браузер
В браузере вы можете использовать API-интерфейс URLSearchParams следующим образом:
var params = new URLSearchParams(); params.append('param1', 'value1'); params.append('param2', 'value2'); axios.post('/foo', params);
Обратите внимание, что URLSearchParams не поддерживается всеми браузерами, но имеется полиполк (убедитесь, что полиполняет глобальную среду).
Кроме того, вы можете кодировать данные с помощью библиотеки qs:
var qs = require('qs'); axios.post('/foo', qs.stringify({ 'bar': 123 }));
Вы можете использовать jQuery.param
postdata = $.param({param1: 'value1', param2:'value2'})
Теперь вы можете использовать postdata, имеет свой параметр post