使用jquery AJAX和node.js,处理来自服务器的响应
这是我第一次在这里发布一个问题,我只是一个潜行在其他问题上的人,但这是我一直试图弄明白的事情,我这辈子都做不到 基本上,我所做的是从客户端使用AJAX跳转到服务器,运行一些代码来搜索外部API,该API提供一些数据,然后我需要这些数据返回到客户端。这是我的密码。。。这都是在express中使用node.js 客户端使用jquery AJAX和node.js,处理来自服务器的响应,node.js,jquery,express,Node.js,Jquery,Express,这是我第一次在这里发布一个问题,我只是一个潜行在其他问题上的人,但这是我一直试图弄明白的事情,我这辈子都做不到 基本上,我所做的是从客户端使用AJAX跳转到服务器,运行一些代码来搜索外部API,该API提供一些数据,然后我需要这些数据返回到客户端。这是我的密码。。。这都是在express中使用node.js 客户端 $('#search').click(function(){ $.ajax({ type: "GET", url: "/sea
$('#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);
});
});
服务器端
$('#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);
});
});
现在我知道,当点击#search按钮时,它确实会转到服务器并成功运行该代码。但我不知道如何将数据从服务器中取出并返回到客户端,以便在那里使用它
我发现其他帖子提到了诸如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);
将content-type头设置为application/json,这样代码看起来就可以了。您可以尝试:将两个文件放在同一目录中,启动服务器(
node app.js
)并打开http://localhost:3012/
。不过,它没有实现factual.get()
,我建议您检查错误
,看看是否发生了任何可能导致问题的错误。感谢您的小测试robertklep,您是对的,即使实现了factual.get(),我的代码也完全没有问题。所以问题似乎在别的地方…你一定是某种巫师罗伯特,因为我没有改变任何东西,但它现在起作用了。对于lib3d所说的内容,您不需要指定标题类型,如果发送json,它就知道它是json。@ribsies如果res.send知道它是json,如果数据是json,那么res.json有什么区别?我很好奇。