4

我正在使用 node.js。

我想按下一个搜索按钮,在后端对另一台服务器进行一些rest api调用并将json返回到前端,然后在前端重新加载一个div,这样我就不必刷新页面了。现在我知道我可以使用 jQuery 或者只是 Javascript dom 操作重新加载一个 div。

但是如何让它在服务器端调用一个方法呢?我可以有一个提交按钮,它会发出一个发布请求,我可以捕获它并从那里进行我的 api 调用,但是从 node.js 端,当我返回时,我将不得不再次呈现页面。如何在不重新渲染或刷新页面的情况下将 JSON 从后端返回到前端?

谢谢。

4

3 回答 3

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 回答
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 回答
1

总结评论(遗憾的是,问题没有正确提出):您想要的是对位于不同域的服务器进行 AJAX 调用,然后是 JavaScript。通常,由于相同的原产地政策,您不能这样做。但是有一些技巧:

1) 使用 jQuery 的 AJAX 和dataType: 'jsonp'. 您应该阅读并了解有关 JSONP 的更多信息。

2) 对您的域进行 AJAX 调用,让服务器调用另一台服务器。使用 Node.JS,您可以使用:

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

请参阅文档

于 2012-06-26T21:11:56.930 回答