2015-03-09 3 views
0

Я довольно новичок в JS и задал вопрос. Удастся ли вытащить данные с другого веб-сайта, чтобы использовать их самостоятельно? Например, скажем, у меня есть веб-приложение JS, которое позволяет пользователю вводить имя пользователя Twitter, а затем скрипт переходит к этому имени пользователя и ищет элемент счетчика повторений и вытягивает этот номер для отображения в веб-приложении. Я уверен, что есть API и т. Д., Чтобы сделать что-то вроде этого конкретного примера Twitter, но я больше понимаю общую идею доступа к данным на других сайтах. Как это можно сделать? Конечно, есть способ, если мой браузер сможет получить доступ ко всей этой информации, не так ли? Вам нужно было бы добавить невидимый iFrame в приложение и выполнить поиск через JS?JavaScript Получить данные с другого сайта

+0

http://www.html5rocks.com/ru/tutorials/cors/ – j08691

ответ

0

Чтобы выразить это базовым понятиям для новичков, это возможно только в том случае, если на веб-сайте есть API, специально предназначенный для обеспечения внешнего доступа. Иногда их довольно легко понять и настроить.

Доступ к содержимому внешнего веб-сайта таким образом, который не был предназначен для поддержки, произошел, но обычно это так называемый «взлом». Иногда это очень легко сделать для очень простых типов сайтов, но большинство сайтов, запрашивающих регистрационную информацию, запрещают это. (За исключением вышеупомянутых API). Самая большая проблема заключается в том, что если кто-то уже вошел в систему в Twitter в своем браузере, внешний сайт сомнительного происхождения мог автоматически отправлять плохие вещи на ваш счет, пока вы даже не посещаете Twitter.

0

Да, это возможно.

Лучший подход заключается в использовании Аякса (Asynchronous JavaScript и XML) с jsonp (нотации объектов Javascript с кожухами) типа данных.

Чтобы использовать этот метод, сервер, к которому вы собираетесь подключаться, должен ожидать запроса, чтобы он мог откликаться с помощью jsonp (это просто данные json, завернутые функцией обратного вызова, которые вы определили при выполнении запроса).

Процесс:

1) Ваш код сделать запрос Ajax на другой сервер, добавив функцию обратного вызова в URL. Очень полезно использовать «callback» имя параметра, но сервер может определить имя переменной, которое он предпочитает.

http://other-server-url.com/?callback=myFunction 

Хорошим и легким подходом здесь является использование jQuery. Если вы определяете dataType: «jsonp» в вашем вызове ajax, jQuery обрабатывает процесс добавления обратного вызова и выполняет правильную функцию, когда вы получаете ответ. Это хорошая идея взглянуть на jQuery's ajax docs и немного прочитать о запросах на перекрестный домен jsonp.

$.ajax({ 
    type: "POST", 
    dataType:"jsonp", 
    url: "http://other-server.com/", 
    data: { name: "John", location: "Boston" } 
}).done(function(msg) { // this function will be executed when you get the response 
    alert("Data Saved: " + msg); 
}); 
  • этот метод JQuery работает только если имя паров является обратным вызовом. Если это не так, вы должны справиться самостоятельно или взглянуть на документацию, чтобы узнать, как это сделать с помощью jQuery.

2) Сервер должен ожидать этот параметр «обратного вызова» и отклик на ваш запрос с помощью формата данных jsonp. Это всего лишь json data format, завернутый функцией, которую вы передали в качестве обратного вызова.Как это:

myFunction({ json-data }); 

3) Когда вы получите ответ, функция туРипсЫоп будет выполняться автоматически, с данными JSON в качестве параметра:

function myFunction(myData) { 
    console.log(myData); // this will log the data on the browser console 
} 

Я надеюсь, что я помог. Хорошее кодирование.