IE8 -if JSON数组在逗号..get错误后没有最后一个元素

时间:2010-09-04 08:49:41

标签: php ajax internet-explorer jsonp

使用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

3 个答案:

答案 0 :(得分:0)

JSON编码器通常不会添加逗号,PHP的json_encode则不会。在JavaScript中,你不应该在数组的最后一个元素之后添加逗号,但是firefox和chrome接受它。

尝试使用json-encoder函数,或者如果不可能,请执行一些字符串处理以删除最后一个逗号。

答案 1 :(得分:0)

IE8是唯一能够正确抛出错误的浏览器:根据JSONLint,这是无效的JSON。

你必须以某种方式修复源代码,我无法看到任何方法让它在IE中运行。

答案 2 :(得分:0)

避免与浏览器使用Aptana StudioEclipse/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结构。