/ / Cordova / phonegap & node.js: XMLHttpRequest renvoie le statut 0 - node.js, cordova, xmlhttprequest

Cordova / phonegap & node.js: XMLHttpRequest renvoie le statut 0 - node.js, cordova, xmlhttprequest

J'ai "écrit un serveur HTTP dans node.js

var http = require("http");
http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end("Hello World " + request.url + "nn");
console.log(request.url);
}).listen(8124);
console.log("Server running at http://127.0.0.1:8124/");

Cela devrait servir les demandes d'une application phonegap / cordova:

function testnodejs() {
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)  {
alert ("Your webbrowser does not support HTTP Request");
return;
}
var url="http://domain.com:8124/i.t?hi=hi!";
console.log(url);
document.getElementById("maindiv").innerHTML = "<div id="itembrd" onClick="testnodejs();"><div id="item">Nodetest</div></div>";
xmlHttp.open("GET", url, true)
xmlHttp.onreadystatechange=function() {
document.getElementById("maindiv").innerHTML += xmlHttp.status + " ";
if (xmlHttp.readyState==4) {
console.log(xmlHttp.responseText);
document.getElementById("maindiv").innerHTML += xmlHttp.responseText + "<br />n";
}
}
xmlHttp.send(null)
}

Dans config.xml j'ai

<access origin=".*" />

La demande renvoie un état ReadyState 4 mais également 0 lorsque vous vous attendez à un 200. Quelqu'un at-il un indice?

Réponses:

3 pour la réponse № 1

Alors, j'ai mis ça de côté pendant quelques jours. Je suis retourné avec un nouvel abandon et je l'ai réparé. Le problème était du côté du serveur node.js, qui ne renvoie pas 200, mais 0. Cela est dû à autoriser l’origine. J'ai récrit l'en-tête de réponse comme suit:

response.writeHead(200, {
"Content-Type": "text/plain",
"Access-Control-Allow-Origin" : "*"
});

et le tour est joué! tango!

J'ai maintenant une solution très légère pour les requêtes XHR dans les applications Cordova / Phonegap.