2013-07-08 35 views
1

我有一個基本的Node.js http服務器設置爲每個文檔,我試圖創建一個非常簡單的Web服務,我可以與Javascript交談(AJAX ),然後我將連接到Arduino。這是一個測試,我可能會走上別的道路,但事實證明這很有趣。總之,這裏是服務器端JavaScript:創建一個簡單的Node.js Web服務用於AJAX

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#嗎?

乾杯。

+1

你能準確地說明你回來的數據嗎?您可能想再看看我們的'res.end'調用的格式。 – travis

回答

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); 

這裏是一個偉大的教程入門快的時候,我用。它貫穿整個過程,從安裝Node.JS(您已經完成)到設置ExpressJS路由來處理傳入的HTTP請求。

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

相關問題