Задать вопрос
Sedbol
@Sedbol

Как сделать AJAX запрос без jqury?

Почему так получается и как выйти из этого положения?
Делаю запрос без jqury:
const request = new XMLHttpRequest();
    const url="roomUser/BootData.php";
    console.info(app.VK_info)
    const params = JSON.stringify({bootdata:app.VK_info});
    //request.responseType =	"json";
    request.open("POST", url, true);
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    request.addEventListener("readystatechange", () => {
        if (request.readyState === 4 && request.status === 200) {
            window.app.boot = request.response;
            console.info(app.boot)
        }
    });

    request.send(params);

В пост запрос приходит
spoiler
kUxwUt4n5Lo.jpg


Строка которую нельзя c помощью json_decode() обратится к её свойствам!!!

Делаю тоже самое на jqury
spoiler
$.ajax({
        url: "roomUser/BootData.php",
        type:"POST",
        //dataType: "JSON",
        data:{bootdata:app.VK_info},
        success:function (BootData) {
            console.info(BootData)
               console.info(BootData);
}
})


spoiler
$.ajax({
        url: "roomUser/BootData.php",
        type:"POST",
        //dataType: "JSON",
        data:{bootdata:app.VK_info},
        success:function (BootData) {
            console.info(BootData)
               console.info(BootData);
}
})


Приходит следующие

То есть я могу обращаться к свойствам отправленного объекта

В обеих случаях на РНР POST запрос принимается так var_dump($_POST)

Как сделать что бы без jqury все работало так же?
  • Вопрос задан
  • 158 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Дело в Content-type: вы передрали код из примера с application/x-www-form-urlencoded, который предполагает отправку данных как в GET-параметрах: a=1&b=2&c=3

При этом шлёте JSON-закодированные данные.

Замените на
request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");


В PHP обработчике брать php://input
$data = json_decode(file_get_contents("php://input"));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
IsSavinykh
@IsSavinykh
Full-Stack Веб-разработчик, мобильный разработчик
Без Jquery можете воспользоваться JS fetch()
Примерно это будет выглядеть вот так:
const url="http://example.com/roomUser/BootData.php";

fetch(url)
	.then(response => response.json())
	.then(BootData => {
		console.log(BootData);
	});

ИЛИ
const url="http://example.com/roomUser/BootData.php";

fetch(url)
	.then(response => response.json().then(BootData => {
		console.log(BootData);
	}));

Вместо example.com - ваш url
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы