2010-08-31 3 views
0

Я использую этот код для загрузки содержимого текстового файла:Почему я не могу загрузить определенный текстовый файл в jQuery?

function go(){ 
     //var myFile = "c:/BMCclient.log"; 
     var myFile = "abc.html"; 
     $.get(myFile, function(data) { 
     alert (data); 
      $('#_content').html(data); 
      alert('Load was performed.'); 
      }); 

    } 

Когда myFile = "abc.html"; этот метод выполняется успешно, но когда я использую myFile = "c:/BMCclient.log";, то он бросает исключение:

uncaught exception: [Exception... "Component returned failure code: 0x805e000a [nsIXMLHttpRequest.open]" nsresult: "0x805e000a (<unknown>)" location: "JS frame :: file:///C:/PIC/batch/personal/web/js/jquery/jquery-1.4.2.js :: anonymous :: line 5113" data: no] 

Почему это происходит?

+0

Как можно получить доступ к файлу на компьютере пользователя с помощью HTTP GET? $ .get ('c: /BMCclient.log', функция (данные) недопустима. – RPM1984

+0

@RPM: если это недопустимо, то следует ли это исключение? –

ответ

4

Это почти наверняка связано с конкретным аспектом Same Origin Policy for file URLs (внимание мое).

Начиная с версии Gecko 1.9, файлы могут читать только некоторые другие файлы. В частности, файл может читать другой файл, только если родительский каталог исходного файла является каталогом-предком целевого файла. Каталоги нельзя загружать таким образом, однако.

Например, если у вас есть файл foo.html, который обращается к другому файлу bar.html, загрузка будет успешной, только если bar.html находится в том же каталоге, что и foo.html, или в каталоге, содержащемся в тот же каталог, что и foo.html.

1

Ajax не очень хорошо работает с локальной файловой системой, вам повезло бы, если вы настроите веб-сервер и получите доступ к сайту с помощью http://localhost.
Вы находитесь в удаче HTML-файлы для вас - большинство браузеров этого не допускают.

0

Это происходит потому, что JavaScript не может получить доступ к файлам из файловой системы вашего компьютера. Если бы это было возможно, то скрипты JS могли бы украсть данные вашего файла, даже если бы вы даже не знали, чтобы он работал так.

+1

Не совсем верно: он делает запрос от локальная файловая система –

+0

Тем не менее, вы не можете получить доступ к файлу с помощью буквы диска. – RaYell

0

Вы не можете загружать файлы в javascript, обратившись к ним с помощью вашей файловой системы. $.get - это HTTP Запрос GET, который будет разговаривать с сервером (например, на локальном хосте).

+0

Вы уверены? Я * думаю * это возможно. –