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




1 Answers

إرسال واستقبال البيانات بتنسيق 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 يستخدم أسماء حالة مختلفة لذا من الأفضل استخدام قيم الحالة.

stringify convert

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

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

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

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

ملاحظة

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




Related

javascript json post get xmlhttprequest