2014-12-09 5 views
1

В настоящее время я использую этот код:Как загрузить удаленный файл с помощью jQuery?

<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> 
<div class="div"></div> 
<script> 
var timer = 10; 
var source = 'file.php'; 
$(document).ready(function() { 

    refresh(); 

    setInterval(function() { refresh() }, timer * 1000); 

}); 
function refresh() { 

    $('.div').load(source); 

} 
</script> 

Но, если я поставлю ссылку на файл file.php, скажем http://example.com/file.php, это ничего не загружается.

Что бы я хотел сделать, так это загрузить удаленные файлы.

Как я могу это сделать? Или это отключено по соображениям безопасности?

Моя консоль снимает следующую ошибку:

XMLHttpRequest cannot load SOURCE. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'URL' is therefore not allowed access.

SOURCE это место, которое я пытался загрузить из и URL место я пытался загрузить источник.

+0

Вам необходимо запустить код на веб-сервере, а не на локальном жестком диске. Какие ошибки JavaScript вы видите в консоли браузера? – Blazemonger

+0

Я запускал его на веб-сервере. Я не проверял никаких ошибок. – Cody

+0

Проверка ошибок - это первое, что вы должны были сделать; разместите их здесь дословно, если вы их не понимаете. – Blazemonger

ответ

0

Хорошо.

Моя проблема заключалась в том, что у меня не было разрешения CORS.

Я установил это, добавив следующий код в верхней части моего файла запроса (file.php)

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: GET'); 
header("Access-Control-Allow-Headers: X-Requested-With"); 

Теперь он работает.

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

+0

Имейте в виду, что [''Access-Control-Allow-Origin: *''] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Access-Control-Allow-Origin) позволит любому другому сайту загружать этот файл через AJAX, независимо от того, хотите вы их или нет. Вам лучше заменить '*' самым узким доменом. – Blazemonger

+0

Могу ли я разрешать несколько доменов запятыми? Как 'header ('Access-Control-Allow-Origin: tumblr.com, facebook.com');'? – Cody

+1

http: // stackoverflow.ком/вопросы/1653308/контроля доступа-Allow-Origin-множественные происхождения-домены – Blazemonger

0

из того, что я понимаю, вы пытаетесь получить текст кода «file.php». Это невозможно. Серверные скрипты только выводят свой экран. например, echos/print/Var dump.

Если вы пытаетесь активировать php-скрипт на удаленном сервере, вы можете использовать post/get с помощью JQuery и получить ответ скрипта.

+0

Хорошо, спасибо. – Cody

+0

Ошибка добавлена ​​в главный вопрос. – Cody

1

Я думаю, что функция jquery load() может загружать только контент из того же домена.

Возможно, вы сможете получить результаты с помощью вызова crossjain ajax (документация на http://api.jquery.com/jquery.ajax/), в зависимости от того, что вы пытаетесь извлечь.

+0

Весь скрипт действительно выполняет печать строки текста и некоторого HTML. Должен ли я это сделать? – Cody

+0

Ошибка добавлена ​​в главный вопрос. – Cody

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