1

我根据文档设置了一个基本的 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 中取回字符串加上:

function () {
        responseContainer = arguments;
    } 

而不是变量的数据。无论我如何尝试取回该数据,它要么是未定义的,要么是这个响应。

根据研究,我认为该变量在回调触发之前没有数据集,因此它是空的。但是如果我设置一个初始值,数据仍然是未定义的。

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

干杯。

4

1 回答 1

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 请求的整个过程。

使用 Node.js、Express 和 MongoDB 创建 REST API

于 2013-07-08T19:16:27.650 回答