创build一个用于AJAX的简单Node.js Web服务

我有一个基本的Node.js HTTP服务器设置为每个文档,我试图创build一个非常简单的Web服务,我可以跟Javascript(AJAX)交谈,然后我将连接到Arduino。 这是一个testing,我可能走下去的东西,但事实certificate这很有趣。 无论如何,这里是服务器端的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加上的string:

 function () { responseContainer = arguments; } 

而不是variables的数据。 无论我如何获取这些数据,它都是未定义的或者这个响应。

从研究中,我认为variables在callback触发前没有设置数据,所以它是空的。 但是如果我设置一个初始值,数据仍然是未定义的。

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

干杯。

完成这个的一个可能的方法是使用带有NodeJS的 ExpressJS来处理你的端点的路由。 通过这样做,您可以设置路线(如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创build一个REST API