JQuery没有';不接受JSON为有效
我现在有一个让我发疯的问题。通过JQuery,我从服务器请求一个JSON文档,但不被接受(错误是“意外字符”)。然而,我的JSON文档似乎很好,在Firebug中,即JSON数据被正确检测和解析 如果我复制响应并尝试通过jsonlint.com验证它,它在第一个字符(JQuery没有';不接受JSON为有效,jquery,ajax,json,Jquery,Ajax,Json,我现在有一个让我发疯的问题。通过JQuery,我从服务器请求一个JSON文档,但不被接受(错误是“意外字符”)。然而,我的JSON文档似乎很好,在Firebug中,即JSON数据被正确检测和解析 如果我复制响应并尝试通过jsonlint.com验证它,它在第一个字符([)上总是失败。如果我更改了一些字符并复制了一些内容,但保留了相同的结果,那么它将进行验证(例如尝试复制[]然后删除并再次写入,再次粘贴内容,您就拥有了相同的文档,但它现在验证了)。奇怪。因此我认为这可能与编码有关,但firefox
[
)上总是失败。如果我更改了一些字符并复制了一些内容,但保留了相同的结果,那么它将进行验证(例如尝试复制[]
然后删除并再次写入,再次粘贴内容,您就拥有了相同的文档,但它现在验证了)。奇怪。因此我认为这可能与编码有关,但firefox明确指出所有内容都是UTF8编码的
现在我有点不知所措,我希望你能以任何方式帮助我
以下是我的服务器的JSON响应:
[
{
"id": 67,
"startdate": "01.01.1970 01:00:00",
"hometeam": "EHC Muskrats",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 69,
"startdate": "01.01.1970 01:00:00",
"hometeam": "EC Mammuts",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 70,
"startdate": "01.01.1970 01:00:00",
"hometeam": "EHC Vienna Wookies",
"awayteam": "EC Mammuts"
} , {
"id": 86,
"startdate": "01.01.1970 01:00:00",
"hometeam": "EHC Vienna Wookies",
"awayteam": "EC Mammuts"
} , {
"id": 4,
"startdate": "08.10.2012 21:00:00",
"hometeam": "Wiener Teifl",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 18,
"startdate": "28.10.2012 21:00:00",
"hometeam": "EC Heizbären",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 19,
"startdate": "04.11.2012 18:00:00",
"hometeam": "EHC Vienna Wookies",
"awayteam": "Innviertel Penguins"
} , {
"id": 6,
"startdate": "15.11.2012 21:00:00",
"hometeam": "EHC Vienna Wookies",
"awayteam": "EC Heizbären"
} , {
"id": 62,
"startdate": "17.11.2012 19:30:00",
"hometeam": "EC V.U. Totonka",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 12,
"startdate": "22.11.2012 20:30:00",
"hometeam": "EHC Vienna Wookies",
"awayteam": "EHC Muskrats"
} , {
"id": 13,
"startdate": "27.11.2012 19:30:00",
"hometeam": "TÜV Cannibals",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 7,
"startdate": "02.12.2012 17:00:00",
"hometeam": "Fire Fighters jun.",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 63,
"startdate": "03.12.2012 19:00:00",
"hometeam": "",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 8,
"startdate": "09.12.2012 17:00:00",
"hometeam": "EHC Vienna Flames",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 14,
"startdate": "17.12.2012 20:15:00",
"hometeam": "EC Mammuts",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 15,
"startdate": "07.01.2013 20:15:00",
"hometeam": "EHC Vienna Wookies",
"awayteam": "EC Mammuts"
} , {
"id": 9,
"startdate": "10.01.2013 20:00:00",
"hometeam": "EHC Vienna Wookies",
"awayteam": "EHC Chiefs"
} , {
"id": 11,
"startdate": "19.01.2013 21:00:00",
"hometeam": "EC Attacki",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 16,
"startdate": "24.01.2013 20:30:00",
"hometeam": "EHC Vienna Wookies",
"awayteam": "TÜV Cannibals"
} , {
"id": 10,
"startdate": "28.01.2013 19:30:00",
"hometeam": "EHC Vienna Wookies",
"awayteam": "EC V.U. Totonka"
} , {
"id": 17,
"startdate": "30.01.2013 20:30:00",
"hometeam": "EHC Muskrats",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 65,
"startdate": "24.02.2013 21:00:00",
"hometeam": "EC Heizbären",
"awayteam": "EHC Vienna Wookies"
} , {
"id": 66,
"startdate": "28.02.2013 20:40:00",
"hometeam": "EHC Vienna Wookies",
"awayteam": "EHC Chiefs"
} , {
"id": 64,
"startdate": "08.03.2013 21:00:00",
"hometeam": "EHC Vienna Flames",
"awayteam": "EHC Vienna Wookies"
} ]
JSON第一行的新行字符有问题。如果您无法在服务器上修复它,请尝试在javascript中解析JSON响应之前替换这些字符。在ID 67之前,您有JSON中的
。如果您删除它,它将有效。虽然它没有显示在此处。但是如果您尝试在此处,您将看到一个eid 67前的xtra(dot)
。
感谢拉维给我指出了正确的方向。JSON中有一个不可见的字符破坏了JQuery JSON解析器
服务器端的问题是1(!)我所有的文件都编码为UTF8+BOM:-<可能早就想到了。更改编码解决了这个问题。这不是有效的json。检查这里,您的json结构中很可能有一个非打印字符,这会阻塞解析器。在解析数据之前,请验证数据源并确保传入数据是干净的。ID 67之前,yo你有JSON格式的
。如果你删除它,它将有效。虽然它没有显示在这里。但是如果你尝试在这里,你会看到id 67之前有一个额外的
。谢谢,这似乎是个问题。问题是这个点没有显示在我的任何编辑器中(即使所有非打印字符都显示出来)。我还发现,如果我删除[
,
也会消失(没有任何其他更改)-顺便说一句,不管我使用什么编辑器。有什么建议吗?经过进一步研究,我发现
不是[
造成
的原因。是PHP代码
产生了它:-(