Pregunta

Estoy tratando de hacer una solicitud asincrónica con el método POST de un trabajador web utilizado en mi extensión. La cosa es que no funciona para mí. En el lado del servidor PHP tengo escucha la escritura de los datos en la variable $ _POST. Aunque soy capaz de establecer conexión con el servidor, e incluso pasar algunos datos de URL (GET), los $ _POST siempre está vacío.

Este es el último código que estoy usando en el trabajador web:

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");
}

(tomado de la página web MDN cuando tengo una idea de que el problema era la política del mismo origen)

Antes de esto yo estaba usando un lugar obvio y ridículamente simple:

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");

En este caso, la solicitud también pasó, pero el $ _POST todavía estaba vacío.

¿Es posible que el post-solicitudes no se les permite a los trabajadores web?

En este momento todo lo que está siendo probado en el servidor local.

¿Fue útil?

Solución

No establecer el tipo de contenido, sino text/plain

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

En caso de que esté desarrollando para Firefox 4 también puede estar interesado en FormData objetos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top