Siunčiant JSON į serverį ir gauti JSON, be jQuery

Turiu siųsti JSON (kurį galiu vykdyti) į serverį ir gauti gautą JSON naudotojo pusėje, nenaudojant jQuery.

Jei turiu naudoti GET, kaip perduoti JSON kaip parametrą? Ar yra pavojus, kad jis truks per ilgai?

Jei turiu naudoti „POST“, kaip nustatyti „GET“ „ onload funkcijos ekvivalentą?

Arba turiu naudoti kitą metodą?

H

Šis klausimas netaikomas paprastų AJAX siuntimui. Ji neturėtų būti uždaryta kaip dublikatas.

47
28 июня '14 в 18:46 2014-06-28 18:46 JVerstry yra nustatytas birželio 28 d. 14 val. 18:46 2014-06-28 18:46
ответ 1 atsakymas

Duomenų siuntimas ir priėmimas JSON formatu naudojant POST metodą

 // 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); 

Gautų duomenų siuntimas JSON formatu naudojant GET metodą

 // 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(); 

Serverio pusės JSON duomenų apdorojimas naudojant 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 gavimo užklausos ilgis priklauso nuo serverio ir kliento (naršyklės), naudojamo nuo 2kB iki 8kB. Serveris turėtų grįžti į 414 (užklausos-URI per ilgas) būseną, jei URI yra didesnis nei serveris gali dirbti.

Pastaba Kažkas pasakė, kad vietoj valstybės vertybių galiu naudoti būsenos pavadinimus; kitaip tariant, galėčiau naudoti xhr.readyState === xhr.DONE vietoj xhr.readyState === 4 . Problema ta, kad „Internet Explorer“ naudoja skirtingus būsenų pavadinimus, todėl geriausia naudoti valstybės vertes.

97
28 июня '14 в 19:22 2014-06-28 19:22 atsakymas pateikiamas hex494D49 birželio 28 d. 14:22, 2014-06-28 19:22

Žr. Kitus klausimus apie „ žymeles „ arba „ Užduoti klausimą“

"194.110.6.9 - 194.110.6.9"