【问题标题】:NodeJS won't return data to jQuery.getJSONNodeJS 不会将数据返回给 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”对象。

标签: jquery node.js getjson


【解决方案1】:

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

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

不是“文本/json”。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    【解决方案3】:

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

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 2012-08-24
      • 2017-04-10
      • 2010-10-09
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多