创建一个简单的Node.js Web服务以与AJAX一起使用

时间:2013-07-08 17:50:26

标签: javascript web-services node.js callback

我根据文档设置了一个基本的Node.js http服务器,我正在尝试创建一个非常简单的Web服务,我可以用Javascript(AJAX)与之交谈,然后我将连接到Arduino。这是一个测试作品,我可能会走另一条路,但事实证明这很有趣。无论如何,这是服务器端的javascript:

var http = require('http');
var _return = 'Bing Bong';

  http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'application/jsonp'});

    //do stuff
    res.end('_return(\'Hello :-)\' + _return)');
}).listen(process.env.VMC_APP_PORT || 1337, null);

这是客户方:

function experimentFive(node) {
    console.log('X5 Func started');

    console.log('Calling Node.js service');

    var nodeURL = node;

    $.ajax({
        url: nodeURL,
        dataType: "jsonp",
        jsonpCallback: "_return",
        cache: false,
        timeout: 50000,
        success: function(data) {
            console.log('Data is: ' + data);
            $("#nodeString").text(" ");
            $("#nodeString").append(data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log('error : ' + textStatus + " " + errorThrown);
        }
    });
}

experimentFive('http://fingerpuk.eu01.aws.af.cm/');

这很有效,我得到了数据,但没有像我期望的那样。我希望能够做的是改变一些数据服务器端并接收它。我在res.end plus中找回了字符串:

function () {
        responseContainer = arguments;
    } 

而不是变量的数据。无论我如何尝试获取该数据,都要么是未定义的,要么就是这种响应。

从研究中我认为变量在回调激发之前没有数据集,所以它是空的。但是,如果我设置初始值,数据仍然是未定义的。

我在这里错过了一些非常简单的东西吗?我应该回到C#吗?

干杯。

1 个答案:

答案 0 :(得分:3)

实现此目标的一种可能方法是使用ExpressJSNodeJS来处理您的终端路由。通过执行此操作,您可以设置GET /media/movies/之类的路由,向此路由发出AJAX请求,然后让它返回您可以在应用上处理的JSON数据。

以下是我在应用程序中使用ExpressJS路由的示例:

var groups = require('../app/controllers/groups');

// find a group by email
app.post('/groups/find', groups.searchGroupsByEmail);

这是我在开始使用Express时使用的一个很棒的教程。它介绍了从安装Node.JS(您已经完成)到设置ExpressJS路由以处理传入HTTP请求的整个过程。

Creating a REST API using Node.js, Express, and MongoDB