2012-11-12 94 views
2

爲了學習node.js,我構建了一個非常簡單的留言板應用程序。基本上只有一條評論表和一系列以前的評論。目前該應用程序僅限於客戶端,並且這些項目存儲在本地存儲器中。發送來自客戶端的請求到node.js

我想要做的是發送項目到節點,我將使用Mongo DB保存它們。

問題是我還沒有找到一種方法來建立一個連接來使用POST請求來回發送客戶端和node.js數據。

在我加入聽衆的請求,並等待數據的服務器端:

$.ajax({ 
    url: '/', 
    type: 'post', 
    dataType: 'json', 
    data: 'test' 
}) 

此:

request.addListener('data', function(chunk) { 
    console.log("Received POST data chunk '"+ chunk + "'."); 
}); 

在客戶端,我用一個簡單的AJAX請求發送數據現在根本不起作用。這可能是因爲我不知道要在AJAX請求「url」參數中放置哪個網址。或者整個事情可能只是使用錯誤方法的構建。

我也嘗試過實施here的方法,但也沒有成功。

如果任何人都可以分享一些關於如何完成這項工作的提示(從客戶端發送POST請求到節點並返回)或分享任何好的教程,那真的很有幫助。謝謝。

+2

看到我的問題:http://stackoverflow.com/questions/10112730/get-posted-data-from-form – karaxuna

回答

2

我剛剛創建的,你想嘗試的客戶端和服務器之間只是一個JSON數據連接skiliton和它的工作,你可以檢查以下

服務器端代碼:

var http = require("http"); 
 
var url = require("url"); 
 
var path = require("path"); 
 
var ServerIP = '127.0.0.1', 
 
    port = '8080'; 
 

 
var Server = http.createServer(function (request , response) { 
 
    console.log("Request Recieved" + request.url); 
 
    var SampleJsonData = JSON.stringify([{"ElementName":"ElementValue"}]); 
 
    response.end('_testcb(' + SampleJsonData + ')'); // this is the postbackmethod 
 
    }); 
 
Server.listen(port, ServerIP, function() { 
 
    console.log("Listening..." + ServerIP + ":" + port); 
 
});

客戶端:

jQuery.ajax({ 
 
    type: 'GET', 
 
    url: 'http://127.0.0.1:8080/', 
 
    async: false, 
 
    contentType: "text/plain", // this is the content type sent from client to server 
 
    dataType: "jsonp", 
 
    jsonpCallback: '_testcb', 
 
    cache: false, 
 
    timeout: 5000, 
 
    success: function (data) { 
 
         
 
    }, 
 
    error: function (jqXHR, textStatus, errorThrown) { 
 
      alert('error ' + textStatus + " " + errorThrown); 
 
    } 
 
}); 
 
      
 
} 
 
function _testcb(data) { 
 
//write your code here to loop on json data recieved from server 
 
}

0

我強烈推薦使用node.js的socket.io-modul(http://socket.io/)。 它使建立連接和傳遞數據很容易!它運作事件驅動和非阻塞。

+0

我意識到socket.io,但我只是沒有設法使其工作。客戶端代碼無法讀取包含的socket.io腳本文件。但也許我會再試一次。 – Maverick

0

您可以使用另一個回調。

閱讀後的數據後只需添加這

response.addListener('end', function(){ 
    console.log('done') 
    // Now use post data. 
}); 

我有同樣的問題,它的工作

0

使用socket.io爲此。 對於客戶端和服務器之間的通信,請使用emit()和on()方法。 例如:如果您希望將發佈的數據從客戶端發送到服務器,則在客戶端,發送包含發佈參數的事件。現在在服務器端創建一個事件監聽器,監聽客戶端發出的相同事件。 在客戶端:

socket=io(); 
    $('form').submit(function(){ 
    var param1=$('param1').val(); 
    ... 
    socket.emit('mypost',param1); 
    }); 

在服務器端:

var io=socket(require('http').Server(require('express')())); 
    io.on('connection',function(client){ 
     client.on('mypost',function(param1){ 
      //...code to update database 
     }); 
    }); 
相關問題