是否可以在Javascript中组合GET和POST?

时间:2016-09-18 12:21:56

标签: json post get

我有应该登录的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返回时?

1 个答案:

答案 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);
        }
    });