使用jQuery AJAX与node.js,处理来自服务器的响应
问题描述:
这是我第一次在这里发布一个问题,我主要只是一个潜伏在其他问题上的潜伏者,但这是我一直在尝试弄清楚和为我的生活不能。使用jQuery AJAX与node.js,处理来自服务器的响应
基本上我在做的是使用AJAX从客户端跳到服务器,运行一些代码,搜索外部API给我一些数据,然后我需要这些数据返回到客户端。这里是我的代码......这一切都是如何使用Node.js与快递
客户端
$('#search').click(function(){
$.ajax({
type: "GET",
url: "/search",
dataType: "json"
}).done (function (data) {
alert(data);
});
});
服务器端
app.get('/search', function(req, res){
factual.get('/t/places',{q:'starbucks'}, function (error, data) {
console.log(data);
res.send(data);
});
});
现在我知道,当#搜寻按钮被单击,它会转到服务器并成功运行该代码。但是我不知道如何从服务器获取这些数据,然后返回到客户端以在那里使用它。
我发现其他的帖子提到像res.send/res.write/res.end,我已经尝试了所有这些形式,以我的知识,我永远无法将这些数据返回给客户端。
任何提示或可能更好的方式来做到这一点将非常感激。
答
试试下面的代码服务器端:
app.get('/search', function(req, res){
factual.get('/t/places',{q:'starbucks'}, function (error, data) {
console.log(data);
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(data));
});
});
它应该工作。代码客户端看起来不错。
编辑:您还可以使用:
res.json(data);
设置内容类型头应用/ JSON – lib3d
你的代码看起来就好了。你可以尝试下面两个文件(https://gist.github.com/robertklep/5382069):将两个文件放在同一个目录中,启动服务器('node app.js')并打开http://本地主机:3012 /'。但它并没有实现'factual.get()',我会建议你检查'error'来查看是否有可能导致问题的错误。 – robertklep
感谢你的小测试robertklep,你是对的,我的代码都是完全正常的,即使使用了factual.get()。所以这个问题似乎在其他地方... – ribsies