OnReadyStateChange逻辑

时间:2017-06-11 15:39:08

标签: javascript

我很难通过以下功能搞清楚逻辑:

function confirm() { 
  var http = new XMLHttpRequest();
  var url = "promote.php?user=' . $link . '";
  var params = "confirm_ref=' . urlencode(encrypt($reff,$key)) . '";
  http.open("POST", url, true);
  http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http.onreadystatechange = function() {
    if(http.readyState == 4 && http.status == 200) {
    }
  }
  http.send(params);
}

根据我的逻辑,http.send(params);应该包含在http.readyState == 4 && http.status == 200条件之后。但是,如果我这样做,它就不再起作用了。

也许有人可以解释在发送帖子之前如何确保满足这两个条件(就绪状态和状态)...

1 个答案:

答案 0 :(得分:1)

您为onreadystatechange指定的函数是一个回调函数,该函数在触发readystatechange事件时执行。这可能在任何时候发生,因此在分配函数时不会阻止程序流。

现在您要显式处理达到4 - DONE状态。这意味着"数据传输已完成或传输过程中出现问题(例如无限重定向)"。您还需要确保服务器的状态为200-OK。两者仅在您发送请求后才存在,并且服务器返回其状态代码。因此,在发送请求之前检查这些条件是没有意义的。