1

我的 Ajax-Request 确实返回了这个结果(通常是一个有效的 JSON 字符串):

{"status":"ERROR","message":"Errore: Ti prego di inserire la domanda!"}

这是响应标头:

Connection:Keep-Alive
Content-Length:80
Content-Type:application/json; charset=utf-8
Date:Sat, 16 Feb 2013 10:02:18 GMT
Keep-Alive:timeout=5, max=97
Server:Apache/2.2.21 (Win32) PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By:PHP/5.3.8

当我直接将 JSON 字符串从浏览器控制台复制/粘贴到像http://jsonlint.com这样的 JSON 解析器时,它会导致“意外令牌”。为什么?

我还通过在文本编辑器中重写相同的字符串来测试它——当然这个结果是“有效的”......

4

1 回答 1

2

正如您所说,您引用的是有效的 JSON。我希望您那里有一个或多个“不可见”字符导致问题。(它/它们不存在于您的问题中,复制和粘贴会给出“有效”结果。)当我们看到这个问题时,通常就是这样。

Context-Length标题证实了这一点。它说内容的长度是 80,但您的 JSON 中只有 71 个字符,在 UTF-8 中没有一个是多字节字符。所以我倾向于怀疑无效的不可见字符,可能在响应的开头或结尾。如果将导致http://jsonlint.com上出现问题的相同字符串粘贴到基本文本编辑器中,您应该能够找到它们;通常它们会显示为有趣的符号。

于 2013-02-16T10:15:08.350 回答