创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