3

node.js を学習するために、非常に単純なゲストブック アプリを作成しました。基本的には、コメント フォームと以前のコメントのリストだけです。現在、アプリはクライアント側のみで、アイテムはローカル ストレージに保存されます。

私がやりたいことは、Mongo DB を使用してアイテムを保存するノードにアイテムを送信することです。

問題は、POST 要求を使用してクライアントと node.js の間でデータを送受信するための接続を確立する方法をまだ見つけていないことです。

サーバー側では、リクエストにリスナーを追加し、データを待ちます。

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

クライアント側では、単純な AJAX リクエストを使用してデータを送信します。

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

これは現時点ではまったく機能しません。AJAX リクエストの「url」パラメーターに配置する URL がわからない可能性があります。または、全体が間違ったアプローチを使用したビルドである可能性があります。

ここで説明されている方法も実装しようとしましたが、成功しませんでした。

これを機能させる方法 (クライアント側からノードに POST 要求を送信して戻す) に関するヒントを誰かが共有したり、優れたチュートリアルを共有したりできれば、本当に役に立ちます。ありがとう。

4

4 に答える 4

3

クライアントとサーバー間の json データ接続だけを試してみたいスキルトンを作成しましたが、うまくいきました。以下のコードを確認してください。

サーバ側 :

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
 }

于 2014-10-22T20:26:01.310 に答える
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
        });
    });
于 2015-10-24T18:12:11.890 に答える
0

node.js ( http://socket.io/ )の socket.io-modul を強くお勧めします。これにより、接続の確立とデータの受け渡しが非常に簡単になります。イベント駆動型でノンブロッキングで動作します。

于 2012-11-12T11:03:57.347 に答える