IE8 -Если массив JSONP не имеет последнего элемента после запятой ..get error - PullRequest
0 голосов
/ 04 сентября 2010

Мой сценарий X-сайта с использованием JSONP сталкивается с ошибкой в ​​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 ....

Пожалуйста, помогите Спасибо Мохан Гупта

Ответы [ 3 ]

0 голосов
/ 04 сентября 2010

IE8 - единственный браузер, который правильно генерирует ошибку: это недопустимый JSON в соответствии с JSONLint .

Вам нужно как-то исправить исходный код, я не вижу ниспособ заставить это работать в IE.

0 голосов
/ 04 сентября 2010

Чтобы избежать существенной несовместимости с браузером, используйте 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"
         }
     ]
}

Когда вы генерируете JSON из объекта в PHP, вам лучше использовать метод json_encode илиэквивалентен на разных языках, что создает правильно закодированную структуру JSON до ошибок, с которыми вы столкнулись.

0 голосов
/ 04 сентября 2010

Кодеры JSON обычно не добавляют запятую, а PHP json_encode - нет. В JavaScript не следует добавлять запятую после последнего элемента массива, но Firefox и Chrome принимают это.

Либо попробуйте функцию json-encoder, либо, если это невозможно, выполните некоторую обработку строк, чтобы убрать последнюю запятую.

...