有效JSON文档中的语法错误

时间:2013-08-23 13:24:02

标签: json node.js google-chrome safari jsonp

我正在使用Node js,这就是我构建响应的方式:

response.writeHead(200, {"Content-Type": "script"});
response.write(JSON.stringify({"test":"fail"}));
response.end();

客户端发出了一个jsonp请求,而在Chrome中就像在Safari中一样,我收到了这个错误:

Resource interpreted as Script but transferred with MIME type text/plain.
SyntaxError: Unexpected token ':'

浏览器可以访问收到的回复:

{"test":"fail"}

语法错误来自哪里?

1 个答案:

答案 0 :(得分:1)

客户端正在尝试执行Script资源(它被解释为Script,而不是JSON)。 {"test":fail"}是无效的JavaScript - 尝试在控制台中运行它。

jsonp需要客户端通常请求的回调,以便它可以正常运行。你应该做的事情是:

response.write(request.query.callback + "(" + JSON.stringify(json) + ")");

这将以

的形式发出
callback12345({"test":"fail"})

这是有效的JavaScript并且可以正常运行。