Quando provo a pubblicare alcuni dati sul mio servizio API back-end, utilizzo il file XMLHttpRequest
oggetto, ma quando provo a inviare i dati con ajax.send
non ha inviato nulla al server
Snipper di codice:
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);
}
};
risposte:
0 per risposta № 1Devi:
- Supponiamo che tu stia inviando JSON
- Converti la tua struttura di dati JavaScript in JSON
Come:
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 per risposta № 2
Non è possibile inviare direttamente un oggetto JS sul filo.
Devi prima convertirlo in una stringa, proprio come devi analizzarlo quando lo riavrai.
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);
}
};
Il codice di test PHP più semplice sul lato server sarebbe:
<?php
echo file_get_contents("php://input");
?>
Ed ecco un esempio leggermente più avanzato che lo decodificherà, aggiungerà un nuovo campo e lo rimanderà indietro:
<?php
$json = file_get_contents("php://input");
$object = json_decode($json);
$object->id = 123;
echo json_encode($object);
?>