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 Postgres 查询的数据 [重复]