2013-09-06 3 views
0

Я пытаюсь получить содержимое файла .txt, хранящегося на одном из моих серверов, из javascript, который выполняется на другом сервере.Загрузить .txt с удаленного сервера

Я использую:

$.ajax({ 
    url: "http://example.com/file.txt", 
    dataType: "jsonp", 
    success: function(data) { remoteFile = data; } 
}); 

Но я получаю Uncaught SyntaxError: Unexpected identifier в строке 1 удаленного .txt файла.

Текстовый файл что-то вроде:

----My document---- 
Once upon a time, there was a fat princess... 

Как я могу исправить эту проблему?

+0

Ваш файл не json. Вы должны проксифицировать его на стороне сервера, если это запрос перекрестного домена. –

+0

Попробуйте изменить тип данных на «текст». 'file.txt' не json. –

+0

@JonLaMarr, но тогда ошибка перекрестного домена будет запущена –

ответ

2

Мне кажется, вам не нужно было бы возиться, если бы вы использовали CORSinstead of jsonp.

В PHP это seems to be так же легко, как добавить что-то вроде этого на стороне сервера:

header("Access-Control-Allow-Origin: *"); 

Вот один последний ресурс, для getting CORS working.

1

Поскольку вы не сохраняете объект json, вы должны изменить свой тип данных на текст.

$.ajax({ 
    url: "http://example.com/file.txt", 
    dataType: "text", 
    success: function(data) { remoteFile = data; } 
}); 
+0

'text' не разрешает запросы доменов с перекрестным происхождением – PurpleFoxy

+0

Это функция защиты браузера. К сожалению, нет. Вам нужно либо изменить файл на json-файл, если вы хотите использовать json, нам нужно будет получить файл с помощью скрипта на стороне сервера, такого как PHP. – Robbert

+0

если я подготовлю txt как '{" data ":" my document "}' будет работать? – PurpleFoxy

4

Мое предложение создать файл PHP, который использует локон, чтобы получить содержимое файла:

//getFile.php 
<?php 
    if(isset($_GET['filename'])) { 
     $fName = $_GET['filename']; 

     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $fName); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

     $text = curl_exec($ch); 
     echo $text; 
    } 
?> 

И для JQuery:

$.ajax({ 
    url : './getFile.php', 
    data : { filename : 'http://example.com/file.txt'}, 
    success : function (r) { console.log(r) //your data } 
}) 
+0

Я могу использовать только JS на сервере получателя – PurpleFoxy

Смежные вопросы