Изначально была ошибка:
Я ее исправил сначала добавив в Acess-Control....:'*' , отправил данные с формы но ,что в $_REQUEST , что в $_POST пусто. Дальше я попробовал сменить header на Origin, X-Requested-With, Content-Type, Accept, Authorization , все тоже самое ошибки нет, но $_POST $_REQUEST снова пустые. Как мне решить эту проблему? Вот сам обработчик:
<?
header('Content-type: json');
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");
$theme = trim(htmlspecialchars($_POST["THEME"]));
$tel = trim(htmlspecialchars($_POST["TEL"]));
$email = trim(htmlspecialchars($_POST["EMAIL"]));
$msg = trim(htmlspecialchars($_POST["MESSAGE"]));
if ($_REQUEST["THEME"] == 'Не выбрано' || $_REQUEST["TEL"] == '' || $_REQUEST["EMAIL"] == '') {
echo json_encode(
array(
"STATUS" => 'ERROR!',
"REQ" => $_REQUEST
)
);
die();
} else {
$to = 'guscha.e@yandex.ru';
$sub = 'Вопрос юристу';
$fields = array($theme, $email, $msg);
mail($to, $sub, 'Нужна помощь', $fields);
echo json_encode(
array(
"THEME" => $theme,
"TEL" => $tel,
"EMAIL" => $email,
"MESSAGE" => $msg,
"STATUS" => 'OK',
"REQ" => $_REQUEST
)
);
die();
}
Вот ajax:
ajaxFunc() {
let form = document.querySelector('#order-jurist');
let data = serialize(form, {hash: true});
axios({
method: 'post',
url: 'http://военгарант.рф/api/jurist-order.php',
data: data,
})
.then(res => {
// console.log('ok');
console.log(res);
// console.log(item);
})
.catch(function (er) {
console.log('error');
console.log(er);
});
console.log(data);
}
Вот ответ от сервера:
file_get_contents("php://input"):
axios
отправляет данные с заголовком header('Content-Type: application/json')
, потому и данные не попадали в массив $_POST
.
Есть два решения для POST
запроса с помощью axios
.
Что бы отправлять на сервер данные нужного формата и с нужными заголовками.
axios({
method: 'post',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
url: 'ajax.php',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
})
.then(function(response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
Надо явно задать параметр headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
.
А это второй способ с применением URLSearchParams:
var params = new URLSearchParams();
params.append('firstName', 'Fred');
params.append('lastName', 'Flintstone');
axios({
method: 'post',
url: 'ajax.php',
data: {params}
})
.then(function(response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
А здесь с помощью URLSearchParams
создаем объект данных что бы отправить их в формате application/x-www-form-urlencoded
а не JSON
․
Примечание: URLSearchParams
не поддерживается всеми браузерами. Поддержку броузеров URLSearchParams
можете смотреть здесь.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Задача состоит в получении изменённых областей экрана с большой скоростьюНасколько известно мне, для этого используются mirror драйвера
Доброго времени суток! С принципом создания анимации из изображения я знаком, а есть способы использовать gif для воспроизведения анимации...