Для браузеров, отличных от IE
Активный X-объект IE, похоже, не очень заботится о состоянии готовности, другие браузеры могут не загружать текст достаточно быстро во время запуска вашей функции (следовательно, почему вы получаете пустое значение вместо содержимого файла). IE X, кажется, обрабатывает это автоматически и игнорирует состояние готовности, поэтому вам придется разбить код по-другому, как показано ниже. Обычно вы проверяете status
запроса, чтобы увидеть, полностью ли он прочитан или нет, прежде чем получить доступ к responseText
.
Добавить onreadystatechange
вы не можете проверить атрибут status
, поскольку по запросу файловая система не выполняется никаких HTTP-запросов. (Статус всегда будет 0 для запроса, не отправленного через HTTP). Лучшее, что я могу предложить, это:
function loadXMLDoc(url)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
document.getElementById('test').innerHTML = xmlhttp.responseText;
}
xmlhttp.open( "GET", url );
xmlhttp.send(null);
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open( "GET", url );
xmlhttp.send(null);
document.getElementById('test').innerHTML = xmlhttp.responseText;
}
}
Для ХРОМА
Если вы используете CHROME , вы должны запустить Chrome с помощью переключателя --allow-file-access-from-files
. В противном случае он отклонит запросы файловой системы ajax. (Вам придется установить это, даже если вы используете так называемую «более простую» библиотеку, такую как jQuery).
Запуск приложений AJAX в файловой системе в целом
Обычно не очень хорошая идея, много предостережений по этому маршруту. Обычно локальная разработка выполняется с помощью веб-сервера, установленного на localhost на компьютере разработчика.