Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
共享桌面&;基于Web的Javascript REST/Ajax_Javascript_Ajax_Node.js_Rest - Fatal编程技术网

共享桌面&;基于Web的Javascript REST/Ajax

共享桌面&;基于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请求

我正在运行一个node.js后端和一个基于Web的javascript客户端,以发送AJAX请求

现在,我想使用纯javascript(即Google的V8)实现一个小型桌面版javascript客户端

在这个场景中,由于没有窗口/文档对象,如何为桌面版本启用AJAX支持?在这样一个完美的世界中,Web和桌面版本将共享相同的代码


或者我需要在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调用该本机代码。或者,使用现有的框架。