/ / XHR Wyślij nic do serwera - javascript, json, ajax

XHR nie wysyła niczego na serwer - javascript, json, ajax

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

Musisz:

  1. Załóżmy, że wysyłanie JSON
  2. 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);
?>