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

Javascript 如何在不重新加载或重新呈现页面的情况下将JSON从node.js后端返回到前端?,javascript,jquery,node.js,dom,post,Javascript,Jquery,Node.js,Dom,Post,我正在使用node.js 我想按下一个搜索按钮,对后端的另一台服务器进行一些RESTAPI调用,并将json返回前端,然后在前端重新加载一个div,这样我就不必刷新页面了。现在我知道我可以用jQuery重新加载一个div,也可以只重新加载Javascript dom操作 但是我如何让它在服务器端调用一个方法呢?我可以有一个submit按钮,它会发出post请求,我可以捕获它并从那里调用api,但是从node.js端,当我返回时,我必须再次呈现页面。如何在不重新呈现或刷新页面的情况下将JSON从后

我正在使用node.js

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

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

谢谢。

服务器上大致如下所示:

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);
var-app=express.createServer();
app.use(express.bodyParser());
app.post('/search',函数(req,res){

search\u form=req.body;//下面演示如何发出基本的AJAX请求

小提琴:

​ ​

总结评论(遗憾的是,这个问题没有被正确地问到):您想要的是对位于不同的域上的服务器进行AJAX调用,然后是JavaScript。通常情况下,由于同源策略,您不能这样做。但是,有一些黑客:

1) 将jQuery的AJAX与
数据类型一起使用:“jsonp”
。您应该阅读并了解更多关于jsonp的信息

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

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

请参阅。

您说的是AJAX,对吗?您只是问如何在浏览器与服务器之间执行AJAX?还是问如何从服务器向另一台服务器进行HTTP调用?因为我有点困惑。还是问如何使用node.js只显示json而不显示html?我问如何在浏览器与服务器之间执行AJAX。我希望浏览器能够ll服务器,它将进行一些REST调用,并将JSON返回到浏览器。没有刷新。我尝试使用jQuery AJAX,但由于同源策略,我无法对另一台服务器进行REST调用。当res.send()时执行,前端将如何接收和使用数据?这看起来像是他已经拥有的东西。我认为他需要客户端部分。Brandon是对的,我不知道如何对客户端进行编码以使用该数据。啊。所以我可以调用我自己的/search,这将反过来对远程服务器进行API调用。这样就不会违反同源policy和我有我所需要的,对吗?只要你可以在不改变域、端口和协议的情况下访问你的节点服务器示例:(http://localhost:8080),那么你应该很好。否则你必须实现一个JSONP服务,这是一个完全不同的服务。太棒了,谢谢你,我认为这会起作用。我会稍后再试!
$(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);
    }); 
});
var http = require('http');
http.request(/* options */);