如何在不重新加载或重新呈现页面的情况下将node.js后端的JSON返回到前端?

gru*_*uvy 4 javascript jquery post dom node.js

我正在使用node.js.

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

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

谢谢.

Jus*_*mas 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);
Run Code Online (Sandbox Code Playgroud)

你必须实现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>
Run Code Online (Sandbox Code Playgroud)


Bra*_*one 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);
    }); 
});
Run Code Online (Sandbox Code Playgroud)

​ ​