我有应该登录的javascript代码(即将一些信息发送到服务器),然后收到回复JSON消息。我知道这是可行的,首先做一个帖子,然后在异步响应中,当它完成时,做一个get。这将需要两个回调函数和两个消息。
我只是想知道是否有任何方法可以执行get和发送JSON作为查询的一部分,因此只有一个请求/响应而不是两个。
以下是我写的帖子示例:
function post(url, payload, callback) {
payload = JSON.stringify(payload);
var http = new XMLHttpRequest();
http.open("POST", location.pathname + url, true);
http.setRequestHeader("Content-type", "application/json");
http.onreadystatechange = function () {
if (http.readyState === 4 && http.status !== 200) {
callback(false, http.response);
} else if (http.readyState === 4 && http.status === 200) {
callback(true, http.response);
}
return;
};
http.send(payload);
}
如果我想取回JSON,我该怎么办?
是否像将POST更改为GET并查看: http.responseText返回时?
答案 0 :(得分:1)
如果您正在执行任何登录功能,则应始终使用HTTP POST方法。
您可以使用AJAX(W3schools documentation about AJAX)来处理通过POST发送登录表单,然后在同一代码块中处理响应。吼叫就是一个例子。
$('#login-form').submit(function(e) {
e.preventDefault(); // Prevents the page from refreshing
// serializes the form data with id login-form
var formData = $(this).serialize();
$.ajax({
type: 'POST',
data: formData,
contentType: 'application/x-www-form-urlencoded',
dataType: 'json',
url: $(this).attr('action'),
//if your server sends a status OK message handle the response
//data will be the JSON response from the server
success: function(result,status,xhr) {
var jsonRes = JSON.parse(result); // parse the JSON object
console.log(jsonRes);
},
//if there was an error with your request the server will send
// an error response code and it is handled here
error: function(xhr,status,error) {
console.log(error);
}
});