繁体   English   中英

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

[英]How can I return JSON from node.js backend to frontend without reloading or re-rendering the page?

我正在使用node.js.

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

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

谢谢。

以下演示了如何制作基本的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);
    }); 
});

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>

总结评论(遗憾的是,问题没有被正确地问到):你想要的是对不同域上的服务器进行AJAX调用,然后是JavaScript。 通常,由于相同的原始政策,您不能这样做。 然而有一些黑客:

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

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

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

请参阅文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM