我正在使用 xmlhttprequest 从 google chrom 扩展向远程服务器发送请求
我在 manifest.json 中设置了访问远程主机的权限
基本上它按预期工作正常。我所期望的是readystate 4,它在响应完成时被触发。
由于这是服务器端 8 到 10 秒的过程,因此我使用从服务器端到客户端的 echo 进行状态更新。
所以我使用 readyState==3 条件来显示服务器响应
但是当我测试 readystate 1 和 4 时触发事件处理程序而不是 2 和 3
这是我使用的代码
var wini = window.open('','');
var sta='';
var jax = new XMLHttpRequest();
jax.onreadystatechange = function() {
sta = sta + jax.readyState + ', '
wini.document.write(sta+'<br>');
}
jax.open("POST","http://sitename.com/subscript/?save=save&tstamp="+Math.random());
jax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//jax.setRequestHeader("Connection: close");
jax.send("somedata=" + encodeURIComponent(window.somedata));
使用连接关闭。不同的结果。除了 readystate 1 没有其他人被解雇
所以,readystates 1 和 4 工作正常,但不是 2 和 3。最需要的是 3。
代码运行实际发生的是:
1,在弹出窗口中打印,然后经过 8 到 9 秒,当就绪状态为 4
1,2
1,2,3
1,2,3,4
以上三行是一次性打印出来的。所以我假设只有在 readystate 4 时我才能从服务器获得所有响应,而不是在 readystate 为 3 时。
我在其他同源的 Web 应用程序中使用了 readystate 3,它工作并且仍在工作。
对于这个 xhr,我不知道我错过了什么。
如何在这里使用 readystate 3?