2013-08-13 2 views
0

Я создаю экран участника просмотра для другого веб-сайта (а не в моем домене). Я пытаюсь получить некоторые вещи с этого сайта на основе их класса. Например, я пытаюсь получить аватар человека, который имеет класс .avatar. Я пробовал:Загрузка некоторых элементов с другого сайта

$('#accountPic').load('www.theWebsite.com .avatar'); 

, чтобы попытаться получить ссылку на изображение, но это не сработает. Есть ли способ получить содержимое класса с другого веб-сайта и отобразить его самостоятельно?

+0

Посмотрите в использовании JSONP с .getJSON) '' методой (. Без использования серверного кода это самый надежный способ получить данные с другого сайта, хотя он не будет делать то, что вы пытаетесь достичь. То, что вы хотите сделать, называется «веб-соскабливание», и вы не можете сделать это, используя только JavaScript (слава богу). – Blazemonger

ответ

2

Это не будет работать через javascript на стороне клиента из-за Same Origin Policy. Предполагая, что сайт, на котором вы пытаетесь получить информацию, не имеет API для внешнего доступа, нужно заняться обработкой HTML-сервера с использованием PHP/ASP.Net и т. Д., А затем запросить это через AJAX.

+0

ОК, я надеюсь не использовать php, но похоже, что это неизбежно на данный момент. –

+0

Итак, я загрузил сайт с файлом_get_contents ('http://stackoverflow.com/'); теперь я хочу найти элемент с

+0

@NoahHuppert You'd be looking for a "PHP HTML parser" library. I haven't used any, so I can't personally recommend any Google results. However, note that if the request is coming from your PHP server, then it's not going to have the visiting user's avatar in it. To extend my answer's analogy, the website will go "Hi, PHP_AUTOMATIC_PROCESS_18!" – Katana314

0

Первым шагом будет поиск полного HTML-документа внешнего сайта. Это само по себе может привести вас к неразрешимым проблемам (из-за ограничений безопасности браузера).

В качестве примера того, почему это проблема безопасности: если бы на сайте появилась информация о том, что нужно иметь на сайте «Добро пожаловать, Джонатан Т. Query! Ваш текущий баланс составляет 4000 долларов». то другие сайты могли бы получить этот текст и отправить его кому известно.

Если у thewebsite.com есть API-интерфейс разработчика для извлечения из него информации, вы можете использовать его. Я знаю, что совместное использование аватаров между сайтами - это реалистичная цель проекта OpenID. Если нет, я думаю, что ваша проблема может быть неразрешимой.

0

Если целевой хост обеспечивает перекрестный доступ происхождения, вы можете это сделать:

$.ajax({ 
    url: 'http://www.theWebsite.com', 
    complete: function(jqXHR) { 
     var doc = $(jqXHR.responseText); 
     var avatar = doc.find('.avatar'); 
     // ... 
    } 
});