Подтвердить что ты не робот

Проблема с запросом Ajax: ошибка 80020101

У меня есть запрос, который возвращает страницу jsp. Но дело в том, что jsp включает jsp: include в него (он вызывает в нем другой файл jsp) и т.е. Дает ошибку 80020101.

Любые идеи?

Спасибо

4b9b3361

Ответ 1

Удалить объявления javascript, которые импортируют script с помощью атрибута src. Измените свой javascript файл на inline-javascript, если он вам действительно нужен.

Источник: http://bytes.com/topic/javascript/answers/750333-ie-syntax-error-80020101-undefined-array

Самый простой способ добавить параметр к вашему запросу AJAX, например ajax = 1, и скрыть объявления javascript при наличии ajax -параметра.

Я не думаю, что это имеет отношение к включению файлов с jsp: include, поскольку браузер не знает ничего, кроме HTML, который вы его бросаете.

Ответ 2

Вы также можете получить эту ошибку, если вы выполняете вызов AJAX из jQuery, и вы передаете дополнительную запятую в конце массива, например:

$.post('http://example.com/example1/',{
  field1:sField1,
  field2:sField2,
  field3:sField3,
  field4:sField4,
  field5:sField5,
},function(sData){
  if (console) { console.log(sData); }
});

См. эту запятую после sField5? Это синтаксическая ошибка. Никакой другой браузер не будет заботиться, кроме IE. IE будет бросать непонятную ошибку 80020101 (что означает, что "невозможно оценить ваш Javascript - у вас есть синтаксическая ошибка" ), и это будет практически затруднительно преследовать его, если вы используете jQuery, потому что отладчик просто укажет на линию eval в jQuery. Отладчик IE будет бесполезен для вас, чтобы преследовать это, благодаря Microsoft. В следующий раз, когда вы получите ошибку 80020101, мои предложения:

  • Найдите любые вызовы AJAX и найдите дополнительную запятую.
  • Ищите любые массивы (например, в фигурных скобках), где в конце есть дополнительная запятая.
  • Если это еще не помогает, посмотрите на технику, в которой вы используете <!-- и //-->, чтобы отметить ваш Javascript. Это была известная проблема с jQuery вплоть до 1.7.2, и это все еще ошибка с командой jQuery.
  • Перейдите к последней версии jQuery.
  • Начните удалять вещи по частям из своего блока script и медленно добавляйте элементы, пока не найдете фрагмент кода, нарушающий его.

Ответ 3

Я столкнулся с этой проблемой с jQuery (даже самой последней версией) дважды. Единственное решение - скопировать и вставить все вашего javascript в большой файл один и запустить его через JSLint (jsfiddle.net, предпочитаемый). Он смог указать несколько незначительных ошибок (включая дополнительную запятую в одной из моих структур обратного вызова данных), которые я смог исправить, а затем повторно скопировать и вставить обратно в свои исходные места, чтобы устранить проблему.

http://jsfiddle.net/devlshone/QKxup/3/

Ответ 4

У меня была такая же ошибка, но в моем случае было зарезервированное слово 'class'. Вот фрагмент кода, чтобы сделать это ясно:

function foo(ajaxResponse){
  $(elem).attr('class', ajaxResponse.class);
}

Я переписал это как:

$(elem).attr('class', ajaxResponse['class']);

Надеюсь, это было полезно.

Ответ 5

В моем случае я обнаружил, что в моем JS-коде есть комментарий HTML:

<script type="text/javascript">
<!-- Unexpected Comment -->
//code...
</script>

Я заменил <!-- --> на /* */, и он сработал. Надеюсь, это поможет кому-то.

Ответ 6

Я столкнулся с этой проблемой, и сообщения об ошибках IE не очень помогли. Итак, я посетил мой сайт в Mozilla Firefox, и Firefox смог точно определить точную строку кода, которая была проблематичной. Не исправление высокой технологии, но если вы используете только IE для отладки этой проблемы, попробуйте загрузить свой сайт в FF (с установленным расширением Firebug) и проверить вывод консоли.

Ответ 7

Возможно ли, что вы используете js файл?

Потому что

Ошибка 80020101 означает, что IE не может скомпилировать ваш script.

Ответ 8

Получите эту ошибку для другой проблемы при использовании jquery.

Изменить     $(документ).ready(функция() {});    К     $(window).load(функция() {});

Ответ 9

Хотел поделиться своим опытом. В моем случае это не имело никакого отношения к javascript. Именно из-за этой строки в HTML-коллеге, использующем angular:

 <img data-ng-model="previewImage" src="" data-ng-src="{{imageURL}}" alt="" ></img>

Я помнил, что наличие пустого src обычно плохое. Я заполнил поле src, и ошибка исчезла.

Ответ 10

Я испытал эту ошибку при использовании jQuery 1.10.2 и загрузил файл, который не существовал.

Поэтому убедитесь, что файл, который вы пытаетесь загрузить, является правильным, иначе IE8 может выдать ошибку 80020101.

Ответ 11

Мои проблемы были вызваны:

var a = b = c = true;

обратился к

var a = true;
var b = true;
var c = true;

Теперь он отлично работает!

Bye MA

Ответ 12

Я также столкнулся с этой проблемой, но, внимательно ознакомившись с моим файлом script, я обнаружил, что сделал небольшую ошибку, которая гладко выполняется в другом браузере, но IE выбирает ее и показывает мне ошибку:

Мой предыдущий код:

var autocomplete = new google.maps.places.Autocomplete(searchTextField ,options);

После анализа я понял, что searchTextField является id, и я должен получить его значение перед его использованием

Поэтому я меняю его на:

var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input,options);

и он отлично работает.

Это действительно здорово, что IE обнаруживает его, но Microsoft может улучшить браузер, чтобы показать конкретную ошибку по конкретной причине, потому что это очень неприятно, если тот же код работает в других браузерах

Ответ 13

Я пропустил, чтобы поставить 'var' перед объявлением переменной, полагая, что он решил проблему.

<script>
    uploadDocument = "Some message";
</script>

Я установил его на:

var uploadDocument = "Some message";

Основная причина заключалась в том, что у меня был элемент в форме с тем же id "uploadDocument", поэтому указанное выше объявление вызывало искажение html

Ответ 14

В моем случае проблема была дополнительной бесполезной комой в Ajax POST в конце функции ошибки:

$.ajax({
     type: 'POST',
     dataType: 'text',
     url: '../Client/GetName',
     data: { ClientId: id},
     success: function (respone) {
                alert(respone);
     },
     error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.statusText);
     }, //<- look here, this guy complicated my simple programmer life
 });

После удаления все работает нормально.