Отправка JSON на сервер и получение JSON в ответ, без JQuery
Мне нужно отправить JSON (который я могу stringify) на сервер и получить полученный JSON на стороне пользователя, без использования JQuery.
Если я должен использовать GET, как мне передать JSON в качестве параметра? Есть ли риск, что это будет слишком долго?
Если я должен использовать Сообщение, Как мне установить эквивалент onload
функция в GET?
или я должен использовать другой метод?
Примечание
этот вопрос не об отправке простого Аякса. Он не должен быть закрыт как дубликат.
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 (Request-URI Too Long), если URI больше, чем может сервер ручка.
Примечание кто-то сказал, что я мог бы использовать имена состояний вместо государственных значений; другими словами, я мог бы использовать
xhr.readyState === xhr.DONE
вместоxhr.readyState === 4
проблема в том, что Internet Explorer использует разные имена состояний, поэтому лучше использовать значения состояний.