javascript - 基于 Javascript REST/Ajax 的共享桌面和 Web

标签 javascript ajax node.js rest

我正在运行一个带有基于 Web 的 JavaScript 客户端的 Node.js 后端来发送 AJAX 请求。

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

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

或者我需要在 js 代码之外编写 AJAX 或 REST API,即作为 native 代码并从 js 调用它?

最佳答案

正如 Brad 所说,目前无法从 ECMAScript 非 Web 实现发出 http 请求,尽管 http://www.w3.org/TR/XMLHttpRequest/ 上有一个工作草案。将 XMLHttpRequest 集成到这些实现中(我猜是通过外部绑定(bind))。

我所做的是创建一个全局函数并在 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(),并且在我的客户端代码中可以使用相同的代码与后端进行通信。

关于javascript - 基于 Javascript REST/Ajax 的共享桌面和 Web,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25944540/

相关文章:

Javascript反序列化返回类名而不是实际对象

javascript - 匿名函数与普通函数

javascript - 单击事件触发但无法添加类

JavaScript [对象][对象] 调试

javascript - Node.js 通过 scp 监视传入存档的目录

javascript - AngularJS 检测 Controller 中的浏览器后退按钮按下?

javascript - Nodejs 基于不活动使 cookie 过期

javascript - CSS 过渡淡入原始文本颜色

javascript - Rails 3 javascript 表单回调未触发

javascript - 使用远程数据源的 Angular Material Design 自动完成及其性能与最佳方法