Отказано в доступе с использованием Javascript/jQuery для локального файла
function publish(text) {
$('#helpdiv').prepend(text);
}
function get_help(topic) {
$.get(topic, publish);
}
<p>Hi. <a href="#" onclick="get_help('inline-help.html'); return false;">click here for more help.</a></p>
<div id="helpdiv"></div>
Я унаследовал этот кусок HTML и JavaScript выше (фрагмент). Он будет использоваться как местная помощь. В настоящее время это только онлайн, и он отлично работает. Однако, когда я копирую файлы локально, я получаю "Отказано в доступе" в Internet Explorer и в Chrome ничего не делает, когда я "нажимаю здесь для получения дополнительной помощи". Он должен загрузить справочный контент из inline-help.html и отобразить его в файле div. Теперь вот кикер, если я возьму те же файлы и скопирую их в inetpub на моем ПК и загрузлю их как http://localhost/hello.html это прекрасно работает.
Предположительно, это проблема безопасности, когда "локальная" зона не позволяет мне загружать файлы с HD пользователя? Но я не совсем уверен в том, что происходит, и хотел бы понять эту проблему дальше и, возможно, найти обходной путь.
Любое понимание очень ценится.
2 ответа
"get" в jquery использует xmlHttpRequest, который, к сожалению, не работает с локальными файлами. Если вам действительно нужно иметь возможность извлекать локальные данные (или данные из другого домена) асинхронно, вы должны использовать динамические теги сценариев. Однако это означает, что файл данных должен быть переформатирован как данные JSON.
Я не думаю, что ваш браузер позволяет вам запускать javascript локально (используя file:///
метод доступа). Но когда вы загружаете его из http://localhost/
это работает отлично.
Вам нужно либо разработать сайт, либо использовать свой локальный сервер.