web-dev-qa-db-de.com

Senden eines JSON an den Server und Abrufen eines JSON im Gegenzug ohne JQuery

Ich muss eine JSON (die ich ausdrücken kann) an den Server senden und die resultierende JSON auf der Benutzerseite abrufen, ohne JQuery zu verwenden.

Wie übergebe ich JSON als Parameter, wenn ich ein GET verwenden soll? Besteht das Risiko, dass es zu lange dauern würde?

Wenn ich einen POST verwenden soll, wie setze ich das Äquivalent einer onload -Funktion in GET?

Oder sollte ich eine andere Methode anwenden?

BEMERKUNG

Bei dieser Frage geht es nicht um das Senden eines einfachen AJAX. Es sollte nicht doppelt geschlossen werden.

85

Senden und Empfangen von Daten im JSON-Format mit der Methode POST

// Sending and receiving data in JSON format using POST method
//
var xhr = new XMLHttpRequest();
var url = "url";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
        var json = JSON.parse(xhr.responseText);
        console.log(json.email + ", " + json.password);
    }
};
var data = JSON.stringify({"email": "[email protected]", "password": "101010"});
xhr.send(data);

Senden von Empfangsdaten im JSON-Format mit der GET-Methode

// Sending a receiving data in JSON format using GET method
//      
var xhr = new XMLHttpRequest();
var url = "url?data=" + encodeURIComponent(JSON.stringify({"email": "[email protected]", "password": "101010"}));
xhr.open("GET", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
        var json = JSON.parse(xhr.responseText);
        console.log(json.email + ", " + json.password);
    }
};
xhr.send();

Server-seitiger Umgang mit Daten im JSON-Format mit PHP

<?php
// Handling data in JSON format on the server-side using PHP
//
header("Content-Type: application/json");
// build a PHP variable from JSON sent using POST method
$v = json_decode(stripslashes(file_get_contents("php://input")));
// build a PHP variable from JSON sent using GET method
$v = json_decode(stripslashes($_GET["data"]));
// encode the PHP variable to JSON and send it back on client-side
echo json_encode($v);
?>

Die maximale Länge einer HTTP-Get-Anforderung hängt sowohl vom verwendeten Server als auch vom verwendeten Client (Browser) ab und liegt zwischen 2 KB und 8 KB. Der Server sollte den Status 414 (Request-URI Too Long) zurückgeben, wenn ein URI länger ist als der Server verarbeiten kann.

Anmerkung Jemand sagte, dass ich anstelle von Statuswerten Statusnamen verwenden könnte; Mit anderen Worten, ich könnte xhr.readyState === xhr.DONE anstatt xhr.readyState === 4 Das Problem ist, dass Internet Explorer andere Statusnamen verwendet, daher sollten Sie besser Statuswerte verwenden.

173
hex494D49

Using new api fetch :

const dataToSend = JSON.stringify({"email": "[email protected]", "password": "101010"});
let dataRecieved=""; 
fetch("",{credentials:'same-Origin',mode:'same-Origin',method:"post",body:dataToSend})
              .then(resp => {
                if(resp.status==200){
                   return resp.json()
                }else{
                    console.log("Status: "+resp.status);
                    return Promise.reject("server")
                }
              })
           .then(dataJson =>{
                 dataToRecieved = JSON.parse(dataJson);
             })
              .catch(err =>{
                if(err=="server")return
                console.log(err);
            })
            
             
0