Kiedy próbuję opublikować niektóre dane w mojej usłudze interfejsu API zaplecza, używam XMLHttpRequest
obiekt, ale kiedy próbuję wysłać dane za pomocą ajax.send
nic nie wysłało na serwer
Snajper kodu:
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);
}
};
Odpowiedzi:
0 dla odpowiedzi № 1Musisz:
- Załóżmy, że wysyłanie JSON
- Przekształć strukturę danych JavaScript w JSON
Taki:
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 dla odpowiedzi nr 2
Nie można bezpośrednio wysłać obiektu JS przez drut.
Najpierw musisz przekonwertować go na ciąg, tak jak musisz go parsować, gdy go odzyskujesz.
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);
}
};
Najprostszym kodem testowym PHP po stronie serwera byłoby:
<?php
echo file_get_contents("php://input");
?>
A oto nieco bardziej zaawansowany przykład, który go zdekoduje, doda nowe pole i odeśle:
<?php
$json = file_get_contents("php://input");
$object = json_decode($json);
$object->id = 123;
echo json_encode($object);
?>