4

node.jsを使用しています。

検索ボタンを押して、バックエンドの別のサーバーにいくつかのREST API呼び出しを行い、jsonをフロントエンドに戻し、フロントエンドでdivをリロードして、ページを更新する必要がないようにします。これで、jQueryまたはJavascriptdom操作を使用してdivのみをリロードできることがわかりました。

しかし、どうすればサーバー側のメソッドを呼び出すことができますか?送信ボタンを設定すると、POSTリクエストが作成され、そこからAPI呼び出しを行うことができますが、node.js側から戻ると、ページを再度レンダリングする必要があります。ページを再レンダリングまたは更新せずに、バックエンドからフロントエンドにJSONを返すにはどうすればよいですか?

ありがとう。

4

3 に答える 3

5

http://expressjs.com/

サーバー上では大まかに次のようなものです。

var app = express.createServer();
app.use(express.bodyParser());
app.post('/search', function(req, res){
   search_form = req.body;  // <-- search items
   MySearch.doSearch(search_form,function(err,items) {
       res.send(items);
   });
});

app.listen(3000);

検索しているものを返すには、doSearchコードを実装する必要があります。

クライアント:

   <script>
   $.ajax( {
      url: '/search',
      data: search_form,
      type: 'POST',
      success: function(items) {
          /* do something with items here */
          // You will likely want a template so you don't have to format the string by hand
        for( var item in items ) {
           $('#results').append('<div>'+item.interestingField+'</div>);
        }
      }
   });
   </script>
于 2012-06-26T20:56:24.497 に答える
5

以下は、基本的なAJAXリクエストを作成する方法を示しています。

フィドル: http: //jsfiddle.net/tWdhy ​​/1/

$(function(){
    $.ajax({
        url: '/echo/json/', //the URL to your node.js server that has data
        dataType: 'json',
        cache: false
    }).done(function(data){
        //"data" will be JSON. Do what you want with it. 
        alert(data);
    }); 
});

</ p>

于 2012-06-26T21:01:24.827 に答える
1

コメントの要約(残念ながら、質問は適切に行われていません):必要なのは、別のドメインにあるサーバー、次にJavaScriptに対してAJAX呼び出しを行うことです。通常、同一生成元ポリシーのため、これを行うことはできません。ただし、いくつかのハックがあります。

1)jQueryのAJAXを。で使用しdataType: 'jsonp'ます。JSONPについて読んで学ぶ必要があります。

2)ドメインに対してAJAX呼び出しを行い、サーバーに別のサーバーを呼び出させます。Node.JSを使用すると、これを使用できます。

var http = require('http');
http.request(/* options */);

ドキュメントを参照してください。

于 2012-06-26T21:11:56.930 に答える