发送一个JSON到服务器,并返回一个JSON,没有JQuery

我需要发送一个JSON(可以stringify)到服务器,并在用户端检索得到的JSON,而不使用JQuery。

如果我应该使用GET,我如何通过JSON作为参数? 是否有风险太长?

如果我应该使用POST,如何在GET中设置onload函数的等价物?

或者我应该使用不同的方法?

备注

这个问题不是关于发送一个简单的AJAX。 它不应该被重复closures。

使用POST方法以JSON格式发送和接收数据

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

使用GET方法以JSON格式发送接收数据

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

在服务器端使用PHP处理JSON格式的数据

 <?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。 如果URI长于服务器可处理的时间,则服务器应该返回414(Request-URI Too Long)状态。

注意有人说我可以使用状态名称而不是状态值; 换句话说,我可以使用xhr.readyState === xhr.DONE而不是xhr.readyState === 4问题是Internet Explorer使用不同的状态名称,所以最好使用状态值。