首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于共享桌面和Web的Javascript REST / Ajax

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

Stack Overflow用户
提问于 2014-09-20 10:12:21
回答 1查看 71关注 0票数 2

我正在运行一个node.js后端和一个基于网络的javascript客户端来发送AJAX请求。

现在,我想使用纯Javascript,即谷歌的V8,做一个小型的桌面版本的javascript客户端。

在这种情况下,如果没有窗口/文档对象,如何为桌面版本启用AJAX支持?在一个完美的世界里,Web和桌面版本会共享相同的代码吗?

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

EN

回答 1

Stack Overflow用户

发布于 2014-09-21 11:21:15

正如Brad所说,目前还没有办法从ECMAScript的非web实现发出http请求,即使http://www.w3.org/TR/XMLHttpRequest/有一个工作草案来将XMLHttpRequest集成到这些实现中(我猜是通过外部绑定)。

我所做的是创建一个全局函数,并在Web版本中实现它,如下所示:

代码语言:javascript
复制
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(),在我的客户端代码中,可以使用相同的代码与后端进行通信。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25944540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档