/ / XHR Non pubblicare nulla sul server: javascript, json, ajax

XHR Posta nulla al server - javascript, json, ajax

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 № 1

Devi:

  1. Supponiamo che tu stia inviando JSON
  2. 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);
?>