Использование AJAX для чтения локальных файлов - PullRequest
1 голос
/ 03 августа 2011

Я новичок в AJAX и просто хочу подтвердить: если у меня весь мой код в папке на рабочем столе, и я использую AJAX для вывода содержимого файла в div в HTML, возможно ли получить доступ к локальным файлам через AJAX или файл должен быть на сервере?

Я просто тестирую функциональность AJAX в первый раз, и у меня возникла проблема, так как отображается ошибка «Отказано в доступе» в файле .js

Ответы [ 5 ]

9 голосов
/ 03 августа 2011

По соображениям безопасности доступ JavaScript к файловой системе на клиенте ограничен - подумайте, хотите ли вы (чужой) JavaScript читать ваши конфиденциальные документы.

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

Очень легко настроить веб-сервер, такой как Apache, чтобы он указывал на каталог разработки, поэтому «сервер» - это просто скрытый рабочий стол. Следовательно, цикл редактирования / тестирования действительно быстрый.

3 голосов
/ 03 августа 2011

Доступ к файлу запрещен с самого начала, в любой реализации браузера javascript.Кто-то может отключить эту «функцию безопасности» в своем браузере вручную.Например, для Google Chrome вы должны запустить исполняемый файл с --disabled-web-security в качестве аргумента командной строки.Firefox может отключить, что в пределах его about:config.

В любом случае, вы совершенно не можете полагаться на это, конечно, если вы пишете код для публики.Но в конце туннеля есть свет.«Новый» Javascript File API уже доступен в Chrome, другие поставщики скоро появятся, я думаю / надеюсь.Этот API "официально" позволяет вашему сценарию читать файлы на локальном компьютере.

1 голос
/ 16 июля 2014

Если вы хотите просто протестировать его, попробуйте отключить веб-безопасность в Chrome, и тогда оно должно работать.

1 голос
/ 03 августа 2011

Javascript работает на стороне клиента, но имеет ограниченный доступ, поэтому он не может получить доступ к локальным файлам с клиентского компьютера.

Таким образом, вам нужно разместить свой контент на сервере, чем вы можете использовать ajax и получить данные в вашем div для отображения клиента.

0 голосов
/ 21 марта 2013

Я надеюсь, что можно получить доступ к файлу локально с помощью Ajax, я попробовал это с Mozilla Firefox и работал хорошо. Я создал 2 текстовых файла и ходил в одной папке. Вот код Извините, если есть какая-либо ошибка.

function getXmlHttpRequestObject() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest(); //Not IE
    } 
    else if(window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP"); //IE
    } 
    else {
        alert("Your browser doesn't support the XmlHttpRequest object.  Better upgrade to Firefox.");
    }
}           
var receiveReq = getXmlHttpRequestObject();     
function sayHello(fname) {
    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
        receiveReq.open("GET", fname, true);
        receiveReq.onreadystatechange = handleSayHello; 
        receiveReq.send(null);
    }           
}
function handleSayHello() {
    if (receiveReq.readyState == 4) {
        document.getElementById('span_result').innerHTML = receiveReq.responseText;
    }
}

Here is the html code
<select name="files" onchange="sayHello(this.value)">
<option value="">Select a file</option>
<option value="file.txt">file.txt</option>
<option value="file2.txt">file2.txt</option>
<option value="ajax.html">Ajax.html</option>
</select><br>
<p>Contents of the file will be displayed below</p>
<div id="span_result"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...