javascript - convert - إرسال JSON إلى الخادم واسترداد JSON في المقابل ، دون JQuery



json stringify (1)

أحتاج إلى إرسال JSON (الذي يمكنني توصيفه) إلى الخادم واسترداد JSON الناتج على جانب المستخدم ، دون استخدام JQuery.

إذا كان يجب علي استخدام GET ، كيف يمكنني تمرير JSON كمعلمة؟ هل هناك خطر من أن يكون طويلاً؟

إذا كان ينبغي لي استخدام POST ، فكيف أقوم بإعداد ما يعادل وظيفة onload في GET؟

أو يجب أن أستخدم طريقة مختلفة؟

ملاحظة

لا يتعلق هذا السؤال بإرسال AJAX بسيط. يجب ألا يتم إغلاقه كمكررة.

https://code.i-harness.com


إرسال واستقبال البيانات بتنسيق 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": "[email protected]", "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": "[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();

معالجة البيانات بتنسيق 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 على كل من الخادم والعميل (المتصفح) المستخدم ، من 2 كيلو بايت إلى 8 كيلو بايت. يجب أن يقوم الخادم بإرجاع 414 (طلب-URI طويل جداً) حالة إذا كان URI أطول من الخادم يمكن معالجة.

ملاحظة قال أحدهم أنه يمكنني استخدام أسماء الحالة بدلاً من قيم الحالة؛ وبعبارة أخرى يمكنني استخدام xhr.readyState === xhr.DONE بدلاً من xhr.readyState === 4 المشكلة هي أن Internet Explorer يستخدم أسماء حالة مختلفة لذا من الأفضل استخدام قيم الحالة.





xmlhttprequest