我很难通过以下功能搞清楚逻辑:
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
条件之后。但是,如果我这样做,它就不再起作用了。
也许有人可以解释在发送帖子之前如何确保满足这两个条件(就绪状态和状态)...
答案 0 :(得分:1)
您为onreadystatechange指定的函数是一个回调函数,该函数在触发readystatechange事件时执行。这可能在任何时候发生,因此在分配函数时不会阻止程序流。
现在您要显式处理达到4 - DONE状态。这意味着"数据传输已完成或传输过程中出现问题(例如无限重定向)"。您还需要确保服务器的状态为200-OK。两者仅在您发送请求后才存在,并且服务器返回其状态代码。因此,在发送请求之前检查这些条件是没有意义的。