NodeJS 不会将数据返回给 jQuery.getJSON

Posted

技术标签:

【中文标题】NodeJS 不会将数据返回给 jQuery.getJSON【英文标题】:NodeJS won't return data to jQuery.getJSON 【发布时间】:2011-03-18 17:25:12 【问题描述】:

我已经设置了 NodeJS,当我浏览到 URL 时它正在返回数据:http://184.106.206.235

但是,当我尝试使用 $.getJSON 调用该 URL 时,回调显示 null 代表 data 变量和 "success" 代表 textStatus 变量。

我想这可能是一个跨域的事情,但我很惊讶textStatus"success" 如果是这样的话。

如果有帮助,这里是服务器端 JS:

http.createServer(function(req, res)
  var output = message: "Hello World!";
  var body = JSON.stringify(output);

  res.writeHead(200, 'Content-Type': 'application/json', 'Content-Length': body.length);
  res.end(body);
).listen(80, "184.106.206.235");

有什么想法吗?

【问题讨论】:

javascript 是否托管在 http://184.106.206.235 上? 是的,虽然我正在尝试使用托管在不同域上的“客户端”JS 来访问它。 那是你的问题。什么“文本状态”? 如果您查看api.jquery.com/jQuery.getJSON 的回调,您会发现它应该返回“data”和“textStatus”对象。 【参考方案1】:

对于遇到同样问题的人来说,只是一个注释,上面的解决方案对我有用,只是做了一个小改动:

“内容类型”:“应用程序/json”

不是“文本/json”。

感谢您的解决方案!这让我发疯了。

【讨论】:

【参考方案2】:

将 "Access-Control-Allow-Origin": "*" 属性添加到您的 writeHead() 调用中:

res.writeHead(200, 
  "Content-Type": "application/json",
  "Access-Control-Allow-Origin": "*"
);

【讨论】:

json数据的内容类型应该是application/json,见问题***.com/questions/477816/the-right-json-content-type【参考方案3】:

如果您使用的是express 框架,您可以尝试以下方法之一: 1.res.contentType('json');设置为内容类型。 2. res.send( some: 'json' ); 将设置内容类型并为您解析。 3. res.json( user: 'tj' ); 可能是最好的方法。

希望对你有帮助:)

【讨论】:

以上是关于NodeJS 不会将数据返回给 jQuery.getJSON的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs API调用将未定义返回给lambda函数

使用来自 Nodejs Postgres 查询的数据 [重复]

nodejs返回接口给前端

Axios不会在nodejs中返回[重复]

Nodejs - 简单的 socket.io 示例不会将数据推送到所有浏览器

nodejs怎么在页面跳转的时候,浏览器地址不跳转