JSON Array и длина объектов обрабатываются по-разному в Chrome и Internet Explorer

1

После XMLHttpRequest функция выполняет .records над .records JSON, однако она работает только в Chrome или Internet Explorer, а не в обоих. Проблема заключается в .length.

В хроме это работает, когда я это делаю:

 request1.response.records.length
 1438

В Internet Explorer я могу получить доступ ко всему телу JSON, а не к значениям .records и это не работает в chrome.

request1.response.length 
30158

Вопрос JSON в вопросе начинается с:

"{
  "total":null,
   "records":[{
  "id":"5465464865",
  "parentId": "545465",...
  • 0
    Разместите свой код, который вызывает JSON.parse() в ответе.
Теги:
xmlhttprequest
iteration

1 ответ

2
Лучший ответ

Похоже, что Internet Explorer не интерпретирует ваш ответ как объект Javascript, а Chrome может вывести его и рассматривать ответ как JS. Я не уверен, что это ваша проблема, но попробуйте указать тип ответа, который вы ожидаете получить, например, ниже:

var xhr = new XMLHttpRequest();
xhr.responseType = 'json'; //check if you have this line, add it if you don't
  • 1
    Похоже, это действительно так, но тип ответа уже установлен.
  • 1
    Хорошо! Я только что провел поиск и, похоже, это ошибка в IE11 (это версия, которую вы используете?): Github.com/naugtur/xhr/issues/123 . Я не уверен, как избежать ошибки, может быть, вы могли бы использовать eval('var res = '+request1.response+';') и работать с переменной evaled res вместо request1.response , но я знаю, что это выглядит странно и этот эвал может быть злом. В любом случае, просто попробуйте, возможно, это решит вашу проблему в краткосрочной перспективе.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню