Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery AJAX和node.js,处理来自服务器的响应_Node.js_Jquery_Express - Fatal编程技术网

使用jquery AJAX和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

这是我第一次在这里发布一个问题,我只是一个潜行在其他问题上的人,但这是我一直试图弄明白的事情,我这辈子都做不到

基本上,我所做的是从客户端使用AJAX跳转到服务器,运行一些代码来搜索外部API,该API提供一些数据,然后我需要这些数据返回到客户端。这是我的密码。。。这都是在express中使用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);
        });
  });
服务器端

$('#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有什么区别?我很好奇。