来自Firefox的Web工作者的异步POST请求

时间:2010-08-28 01:35:01

标签: php javascript ajax firefox-addon web-worker

我正在尝试使用我的扩展中使用的Web worker使用POST方法发出异步请求。问题是它对我不起作用。 在服务器端,我有PHP脚本侦听$ _POST变量中的数据。虽然我能够建立与服务器的连接,甚至在URL(GET)中传递一些数据,但$ _POST始终为空。

以下是我在网络工作者中使用的最新代码:

var serviceUrl = "http://localhost/pfm/service/index.php";
var invocation = new XMLHttpRequest();
if(invocation){
    invocation.open('POST', serviceUrl, true);
    invocation.setRequestHeader('X-PINGOTHER', 'pingpong');
    invocation.setRequestHeader('Content-Type', 'text/plain');
    invocation.onreadystatechange = function(){processResponse(invocation);};
    invocation.send("action=init");
}

(当我得知这个问题是同一个原始政策时,从MDN网站借来的)

在此之前,我使用了一个相当明显和荒谬的简单:

var serviceUrl = "http://localhost/pfm/service/index.php";
var xhr = new XMLHttpRequest();
xhr.open("POST", serviceUrl, true);
xhr.onreadystatechange = function(){processResponse(receiptStoreRequest);};
xhr.send("action=init");

在这种情况下,请求也已通过,但$ _POST仍为空。

Web worker上是否可能不允许POST请求?

现在一切都在localhost上进行测试。

1 个答案:

答案 0 :(得分:0)

请勿设置内容类型text/plain,而是

invocation.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

如果您正在为Firefox 4+开发,您可能也对FormData objects

感兴趣