/ / Cordova / phonegap & node.js: XMLHttpRequest връща статус 0 - node.js, cordova, xmlhttprequest

Cordova / phonegap & node.js: XMLHttpRequest връща статус 0 - node.js, cordova, xmlhttprequest

Написах HTTP сървър в 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/");

Това трябва да обслужва заявки от приложение за телефонна клавиатура / 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)
}

В config.xml имам

<access origin=".*" />

Искането връща readyState 4, но също и статус 0, когато очаквате 200. Някой има ли представа?

Отговори:

3 за отговор № 1

Така че, оставих я настрана за няколко дни. Насочи се обратно с нова изолация и го поправи. Проблемът беше в сървъра на node.js, който не връща 200, но 0. Това се дължи на възможността за произход. Така пренаписах заглавката на отговора:

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

и готово! танго!

Сега имам много леко решение за XHR заявки от приложенията на cordova / phonegap.