2010-08-28 4 views
1

J'essaie de faire une demande asynchrone avec la méthode POST d'un travailleur Web utilisé dans mon extension. Le truc c'est que ça ne marche pas pour moi. Sur le serveur, j'ai un script PHP qui écoute les données dans la variable $ _POST. Bien que je sois capable d'établir une connexion au serveur et même de transmettre des données dans l'URL (GET), le $ _POST est toujours vide.Demande POST asynchrone d'un travailleur Web de Firefox

Voici le dernier code que je utilise dans le Web Worker:

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

(emprunté à partir du site web MDN quand je suis arrivé une idée que la question était la même origine politique)

Avant à ce que j'utilisais une assez évidente et ridiculement 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"); 

Dans ce cas, la demande a également adopté, mais le $ _POST était encore vide.

Est-il possible que les requêtes POST ne soient pas autorisées sur les travailleurs Web?

À l'heure actuelle tout est testé sur localhost.

Répondre

0

Ne réglez pas le type de contenu text/plain mais

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

Si vous développez pour Firefox 4+ vous pourriez également être intéressé par FormData objects

+0

Merci, cela a fonctionné. – kooker