共享桌面&;基于Web的Javascript REST/Ajax
我正在运行一个node.js后端和一个基于Web的javascript客户端,以发送AJAX请求 现在,我想使用纯javascript(即Google的V8)实现一个小型桌面版javascript客户端 在这个场景中,由于没有窗口/文档对象,如何为桌面版本启用AJAX支持?在这样一个完美的世界中,Web和桌面版本将共享相同的代码共享桌面&;基于Web的Javascript REST/Ajax,javascript,ajax,node.js,rest,Javascript,Ajax,Node.js,Rest,我正在运行一个node.js后端和一个基于Web的javascript客户端,以发送AJAX请求 现在,我想使用纯javascript(即Google的V8)实现一个小型桌面版javascript客户端 在这个场景中,由于没有窗口/文档对象,如何为桌面版本启用AJAX支持?在这样一个完美的世界中,Web和桌面版本将共享相同的代码 或者我需要在js代码之外编写AJAX或REST API,即作为本机代码并从js调用它吗?正如Brad所说,目前没有办法从ECMAScript非web实现发出http请求
或者我需要在js代码之外编写AJAX或REST API,即作为本机代码并从js调用它吗?正如Brad所说,目前没有办法从ECMAScript非web实现发出http请求,即使在将XMLHttpRequest集成到这些实现中也有一个工作草案(我猜是通过外部绑定) 我所做的是创建一个全局函数并在Web版本中实现它,如下所示:
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(url、参数、func)
{
var请求=新的ajaxRequest();
request.onreadystatechange=函数(){
if(request.readyState==4){
if(request.status==200 | | window.location.href.indexOf(“http”)==1){
函数调用(this,request.responseText);
}否则{
函数调用(此“”);
}
}
}
请求打开(“POST”http://localhost“+url,正确);
setRequestHeader(“内容类型”、“应用程序/x-www-form-urlencoded”);
请求发送(参数);
};
ajaxRequest=函数()
{
var activexmodes=[“Msxml2.XMLHTTP”,“Microsoft.XMLHTTP”];
if(window.ActiveXObject){
//---即
对于(var i=0;您需要做的所有事情都是发出一个简单的HTTP请求。怎么做?据我所知,XMLHttpRequest不受当前任何ECMAScript实现的支持。它不受支持,为什么不受支持?发出HTTP请求是框架的一部分,而不是语言的一部分。听起来您在V8之上构建自己的框架。我不会这么做这…你可以使用Node.js之类的东西(就像你已经在服务器上使用的一样),它为你提供了大量的框架。你在上一个问题中总结了这一点…是的,你需要用本机代码编写它,并从你的js调用该本机代码。或者,使用现有的框架。