使用带有 node.js 的 jquery AJAX,处理来自服务器的响应

Posted

技术标签:

【中文标题】使用带有 node.js 的 jquery AJAX,处理来自服务器的响应【英文标题】:using jquery AJAX with node.js, handling the response from the server 【发布时间】:2013-04-06 12:12:27 【问题描述】:

这是我第一次在这里发布问题,我基本上只是潜伏在其他问题上,但这是我一直试图弄清楚的事情,我这辈子都做不到。

基本上我正在做的是从客户端使用 AJAX 跳转到服务器,运行一些代码来搜索提供一些数据的外部 API,然后我需要将这些数据返回给客户端。这是我的代码...这都是使用 node.js 和 express

客户端

$('#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 之类的内容,据我所知,我已经尝试了所有这些形式,但我似乎永远无法将这些数据返回给客户端。

非常感谢任何提示或可能更好的方法。

【问题讨论】:

将内容类型头设置为application/json 您的代码看起来还不错。 Here's a gist你可以尝试:将两个文件放在同一个目录下,启动服务器(node app.js)并打开http://localhost:3012/。不过,它没有实现factual.get(),我建议您检查error,看看是否发生任何可能导致问题的错误。 感谢你的小测试 robertklep,你是对的,我的代码完全没问题,即使实现了 factual.get()。所以问题似乎出在其他地方...... 你一定是某种巫师罗伯特,因为我没有改变任何东西,但它现在可以工作了。并且评论lib3d所说的,不需要指定header类型,如果你发送json,它就知道是json。 @ribsies 如果 res.send 知道它是 json 如果数据是 json ,那么 res.json 有什么区别?我很好奇。 【参考方案1】:

尝试以下代码服务器端:

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

【讨论】:

以上是关于使用带有 node.js 的 jquery AJAX,处理来自服务器的响应的主要内容,如果未能解决你的问题,请参考以下文章

来自 node.js 服务器的 Ajax POST [重复]

jQuery 和 Node.js 有啥区别? [关闭]

Node.js 和 JQuery:“ReferenceError:$ 未定义”错误。如何在服务器上将 jquery 与节点一起使用?

使用 node.js 和 express 的 JQuery Ajax 发布请求

使用 Node NOT io.js 在 Mocha 测试中使用 jQuery

使用 node.js 抓取时使用 jQuery 访问 CSS 值