正如Brad所說,目前沒有辦法從ECMAScript非web實現發出http請求,即使在http://www.w3.org/TR/XMLHttpRequest/有工作草案也將XMLHttpRequest集成到這些實現中(我猜通過外部綁定)。
我所做的是建立一個全球性的功能,在網頁版這樣實現:
function SendBackendRequest(url, parameters, func)
{
var request=new ajaxRequest();
request.onreadystatechange=function() {
if (request.readyState == 4) {
if (request.status == 200 || window.location.href.indexOf("http") ==-1) {
func.call(this, request.responseText);
} else {
func.call(this, "");
}
}
}
request.open("POST", "http://localhost" + url, true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send(parameters);
};
ajaxRequest=function()
{
var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
if (window.ActiveXObject) {
// --- IE
for (var i=0; i<activexmodes.length; i++) {
try {
return new ActiveXObject(activexmodes[i])
}
catch(e) {
//suppress error
}
}
} else
{
if (window.XMLHttpRequest) // --- Mozilla, Safari etc
return new XMLHttpRequest();
else return false;
}
};
在桌面端我只是實現SendBackendRequest(),以及和在我的客戶端代碼可以使用與後端進行通信的代碼相同。
所有你需要做的就是做一個簡單的HTTP請求。 – Brad 2014-09-20 02:39:47
如何?據我所知,任何當前的ECMAScript實現都不支持XMLHttpRequest。 – MarkusM 2014-09-20 03:00:01
這不是,爲什麼它應該是?進行HTTP請求是該框架的一部分,而不是該語言的一部分。這聽起來像你正在V8之上構建自己的框架。我不會這麼做......你可以使用類似Node.js的東西(就像你已經在你的服務器上使用過的那樣),它給你提供了大量的框架。你在最後一個問題中總結了它......是的,你需要用本地代碼編寫這個代碼,然後從你的JS中調用本地代碼。或者,使用現有的框架。 – Brad 2014-09-20 13:47:44