使用JSONP的我的X站点脚本在IE8上遇到错误但在firefox和crome上工作正常... 这里返回的JSON对象在末尾传递一个带逗号的数组而没有最后一个元素...即像{a,b,c,} 这样的东西..你可以看到最后一个元素由逗号继续,这就是IE上导致问题的原因。 实际的JSONP响应是: gotMsg({“msg”:[{“lastMsgId”:“69”,“user”:“diptanu”,“textVal”:“Sup”,“time”:“2010-09-04 06:20:15”, } ...正如你可以看到最后一个逗号是它所说的导致问题......错误是
预期的标识符,字符串或数字 chat.php?callback = gotMsg& user =& lastMsgId = -1& ref = 1& userId = -1& loc = http%3A%2F% 2Faagmgyd6.yahoo.joyent.us%2Fchat%2Findex.html,第1行字符96 ....
请帮忙 谢谢 Mohan Gupta
答案 0 :(得分:0)
JSON编码器通常不会添加逗号,PHP的json_encode
则不会。在JavaScript中,你不应该在数组的最后一个元素之后添加逗号,但是firefox和chrome接受它。
尝试使用json-encoder函数,或者如果不可能,请执行一些字符串处理以删除最后一个逗号。
答案 1 :(得分:0)
IE8是唯一能够正确抛出错误的浏览器:根据JSONLint,这是无效的JSON。
你必须以某种方式修复源代码,我无法看到任何方法让它在IE中运行。
答案 2 :(得分:0)
避免与浏览器使用Aptana Studio或Eclipse/Javascript Editor的主要不兼容。他们都有可能验证服务器脚本生成的Javascript和JSON对象。
以下是正确构建的个人数据JSON对象的示例。您可以从WIKI::JavaScript Object Notation
获取{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
当您从PHP中的对象生成JSON时,您最好在不同语言中使用json_encode方法或等效方法,以便在遇到错误之前生成正确编码的JSON结构。