Коли я намагаюся опублікувати деякі дані в моєму сервісному сервісі API, який я використовую XMLHttpRequest
об'єкта, але коли я намагаюся надсилати дані ajax.send
він нічого не посилав на сервер
Снайпер коду:
ajax = new XMLHttpRequest();
ajax.open("POST", "https://someapi.com",true);
ajax.send({
name: "Name",
phone: "123468375698563897569575863"
});
ajax.onreadystatechange = function(){
if(ajax.readyState==4){
JSONback = JSON.parse(ajax.response);
console.log(JSONback);
}
};
Відповіді:
0 для відповіді № 1Тобі потрібно:
- Скажіть, що ви надсилаєте JSON
- Перетворіть вашу структуру даних JavaScript в JSON
Такі:
var data = {
name: "Name",
phone: "123468375698563897569575863"
};
var json = JSON.stringify(data);
var ajax = new XMLHttpRequest();
ajax.open("POST", "https://balbalbal.com", true);
ajax.setRequestHeader("Content-Type", "application/json");
ajax.send(json);
0 для відповіді № 2
Ви не можете безпосередньо надіслати об'єкт JS по дроту.
Спершу вам потрібно перетворити його в рядок, як і вам потрібно проаналізувати його, коли ви отримаєте його назад.
ajax = new XMLHttpRequest();
ajax.open("POST", "https://balbalbal.com", true);
ajax.send(
JSON.stringify({
name: "Name",
phone: "123468375698563897569575863"
})
);
ajax.onreadystatechange = function(){
if(ajax.readyState==4){
JSONback = JSON.parse(ajax.response);
console.log(JSONback);
}
};
Найпростішим тестовим кодом PHP на стороні сервера буде:
<?php
echo file_get_contents("php://input");
?>
І ось трохи більш досконалий приклад, який розшифрує його, додасть нове поле та відправить назад:
<?php
$json = file_get_contents("php://input");
$object = json_decode($json);
$object->id = 123;
echo json_encode($object);
?>