[英]How to query the backend of my Node.Js and updating the page without reloading the URL?
[英]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);
});
});
在服务器上大概是这样的:
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.