Отправка JSON на сервер и получение JSON в ответ, без JQuery

Мне нужно отправить JSON (который я могу stringify) на сервер и получить полученный JSON на стороне пользователя, без использования JQuery.

Если я должен использовать GET, как передать JSON в качестве параметра? Есть ли риск, что это будет слишком долго?

Если я должен использовать Сообщение, Как установить эквивалент onload функция в GET?

или я должен использовать другой метод?

Примечание

этот вопрос не об отправке простого AJAX. Он не должен быть закрыт как дубликат.

1 ответов


отправка и получение данных в формате JSON с использованием метода 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": "hey@mail.com", "password": "101010"});
xhr.send(data);

отправка данных приема в формате JSON с помощью метода GET

// Sending a receiving data in JSON format using GET method
//      
var xhr = new XMLHttpRequest();
var url = "url?data=" + encodeURIComponent(JSON.stringify({"email": "hey@mail.com", "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();

обработка данных в формате JSON на стороне сервера с помощью 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);
?>

ограничение длины запроса HTTP Get зависит как от сервера, так и от используемого клиента (браузера) из 2kB - 8kB. Сервер должен возвращать состояние 414 (запрос-URI слишком длинный), если URI больше, чем сервер может ручка.

Примечание кто-то сказал, что я могу использовать имена состояний вместо значений состояний; другими словами, я могу использовать xhr.readyState === xhr.DONE вместо xhr.readyState === 4 проблема в том, что Internet Explorer использует разные имена состояний, поэтому лучше использовать значения состояний.