使用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,我已经尝试了所有这些形式,以我的知识,我永远无法将这些数据返回给客户端。

任何提示或可能更好的方式来做到这一点将非常感激。

+0

设置内容类型头应用/ JSON – lib3d

+0

你的代码看起来就好了。你可以尝试下面两个文件(https://gist.github.com/robertklep/5382069):将两个文件放在同一个目录中,启动服务器('node app.js')并打开http://本地主机:3012 /'。但它并没有实现'factual.get()',我会建议你检查'error'来查看是否有可能导致问题的错误。 – robertklep

+0

感谢你的小测试robertklep,你是对的,我的代码都是完全正常的,即使使用了factual.get()。所以这个问题似乎在其他地方... – ribsies

试试下面的代码服务器端:

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);