Google chrome extension 使用php刷新时,xmlhttprequest未为就绪状态3触发响应事件处理程序

Google chrome extension 使用php刷新时,xmlhttprequest未为就绪状态3触发响应事件处理程序,google-chrome-extension,xmlhttprequest,cross-domain,readystate,Google Chrome Extension,Xmlhttprequest,Cross Domain,Readystate,我正在使用xmlhttprequest从google chrom extension向远程服务器发送请求 我在manifest.json中设置了访问远程主机的权限 基本上,它工作正常。我所期望的是readystate 4,它在响应完成时被触发 因为在服务器端这是一个8到10秒的过程,所以我使用从服务器端到客户端的echo来更新状态 所以我使用readyState==3条件来显示服务器响应 但是当我测试readystate 1和4时,它们正在启动事件处理程序,而不是2和3 这是我使用的代码 var

我正在使用xmlhttprequest从google chrom extension向远程服务器发送请求

我在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,在弹出窗口中打印,然后在就绪状态为4时经过8到9秒

1,2

1,2,3

1,2,3,4

以上三行是一次性打印的。因此,我假设只有通过readystate 4,我才能从服务器获得所有响应,而不是在readystate为3时

我已经在其他来源相同的web应用程序中使用了readystate 3,它已经工作并且仍然工作

对于这个xhr,我不知道我错过了什么


如何在这里使用readystate 3?

最后我发现只有在chrome和safari中它才起作用,因为chrome使用的是safari webkit,可能是webkit不想像其他浏览器那样工作

添加了一个内容类型标题,它按预期工作

另一个用户也有类似的问题,我一直在试验,并找到了以下解决方案

因为我的答案解决了这两个问题,所以我将我在其他问题中给出的答案联系起来,而不是在这里重复

这是我的答案