2015-09-14 2 views
0

UPDATE: эта проблема была решена, моя проблема была опечаткой. Понятие того, что я делаю, было правильным.Использование php file_get_contents() не работает при использовании ajax

У меня есть проверка, если изображение выходит, когда я впервые показываю свою страницу. Он печатает:

if (@file_get_contents($url) != false) 
{ 
    // show URL 
} 
else { 
    // Show Placeholder Image 
} 

Этот код работает, когда у меня есть страницы первой загрузки и PHP написана с HTML.

BUT в других случаях, когда я делаю jQuery .post или .get вызов (так в основном ajax) выполнение проверки файла выше ВСЕГДА не удается. Я распечатал URL-адрес, и он указывает на правильный файл (я могу сделать это, не исправляя ошибки). Теперь URL-адрес - это другой домен, а затем исходный файл, который вызывается, поэтому не уверен, что это проблема с перекрестным доменом (это также веб-сайт, который принадлежит мне, поэтому у меня есть полный доступ к файлам).

Этот код не работает из-за ajax? Перекрестный домен? что-то другое?

Кроме того, я пробовал file_exists, getimagesize и cUrl также не напрасно.

EDIT:

Вот мое сообщение, когда ошибки не подавляются:

Предупреждение: file_get_contents(http://www.---.---) [function.file-получить содержание]: не удалось открыть поток: HTTP запрос не удалось! HTTP/1.1 404 Не найден в --- на линии 352

+0

Является ли ваш сценарий ajax включенным в той же папке, что и этот? –

+0

Я не уверен, что вы подразумеваете под «этим». Мой 'index.php', где работает код, находится в основной папке. Мой ajax находится в папке с корнем, называемой 'js/myscript.js'. JQuery ajax вызывает файл, который находится в корне (sibling of index.php). – KickingLettuce

+0

Попробуйте поместить их в одну папку –

ответ

1

Если PHP в этом случае не работает, попробуйте использовать jQuery для достижения того же результата. Был еще один ответ на SO с небольшой функцией, которая делает именно это: он проверяет, указывает ли url на существующий документ или файл и возвращает свой HTTP-код.

https://stackoverflow.com/a/9377204/536425

Попробуйте как с async: false и async: true, и посмотреть, что один делает работу для вас.

+1

Это не будет работать, если изображение находится в другом домене с веб-страницы из-за требования к одному домену AJAX. – Barmar

+0

@Barmar OP может добавить соответствующие заголовки CORS, поскольку они упоминают, что их удаленный сайт принадлежит им – Phil

+0

Это может быть сложно, поскольку мне нужно прокручивать список и строить серверную часть html на основе результатов базы данных. Если бы мне нужно было проверить только одно изображение, я бы попробовал это, – KickingLettuce