Ajax асинхронный в IE - ошибка «Данные, необходимые для выполнения этой операции, еще не доступны» - PullRequest
2 голосов
/ 19 декабря 2008

У меня есть 100% действительная модель Ajax, написанная на Javascript, с несколькими входами, которые я использую: метод Get или Post, с какой страницей нужно общаться, какую строку отправлять на эту страницу и каким элементом на моей собственной странице я могу быть возиться, когда я получу свой ответ. Проблема заключается в том, что, если я установлю запрос на асинхронный (следовательно, Ajax), IE возвращает ошибку «Данные, необходимые для выполнения этой операции, еще не доступны» в событии onreadystatechange, где все, что я делаю, проверяет, является ли состояние готовности 4 статус 200. Ошибка не появляется в Firefox или Chrome, как я ожидаю, поскольку Ajax является асинхронным.

Вот фрагмент из метода Post

xmlhttp.open("POST", commPage, true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        j = xmlhttp.responseText;
        i.innerHTML = j;
    }
}
xmlhttp.send(str);

Редактировать: я должен указать, что в IE я использую элемент управления ActiveX -> Msxml2.XMLHTTP или Microsoft.XMLHTTP или что-либо еще, возвращающее true первым.

Ответы [ 3 ]

1 голос
/ 19 декабря 2008

Хо хммм

За пределами функции onreadystatechange у меня был вызов для responsetext, чтобы проверить, существует ли он еще, но, очевидно, вы не можете сделать это, если его еще нет, поэтому мне просто пришлось перестроить некоторые ветки. Все в порядке, но это был сценарий, который вызвал проблему

ajaxRequest(){
    [...]
}
if(xmlhttp.responseText){
    myFunc();
}
0 голосов
/ 12 апреля 2011

Как только у меня возникла эта ошибка, я решил ее, настроив таймауты! может быть, вы могли бы попробовать то же самое!

Приветствия

0 голосов
/ 07 октября 2009

Не уверен, что это ваш случай, но я только три часа боролся с этой ошибкой, пока не обнаружил проблему. Класс веб-сервиса не был украшен атрибутом ScriptService, который позволяет вызывать методы из клиентского скрипта! Я бы не стал винить IE, потому что IE просто строги в ошибках и сообщает обо всем, что игнорируют другие браузеры. IE хорош для отладки. Надеюсь это поможет. Ну ... наверное не ты, так как твой пост сейчас очень старый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...