我根据文档设置了一个基本的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#吗?
干杯。
答案 0 :(得分:3)
实现此目标的一种可能方法是使用ExpressJS和NodeJS来处理您的终端路由。通过执行此操作,您可以设置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请求的整个过程。