2012-05-19 5 views
2

Предположим, у меня есть веб-страница в Интернете, на этой странице есть много элементов с идентификаторами. Как получить эти элементы с помощью javascript? Я использовал этот кусок с JQuery:Извлечь элементы из html с помощью javascript

$.get(websiteUrl, {}, function(results){ 
    //alert(results); // will show the HTML from anotherPage.html 
    console.log($(results).find("bookId").html()); // show "bookId" div in results 
    }); 

Но я получаю сообщение об ошибке:

XMLHttpRequest cannot load; Origin http://127.0.0.1:8000 is not allowed by Access-Control-Allow-Origin. 

На самом деле, я пытаюсь загрузить некоторые данные из веб-страницы в PhoneGap приложение на Android. Любые идеи, как это сделать?

+0

С какого браузера вы проводите тестирование? И вы попробовали свою живую версию своей веб-страницы? Google Chrome не позволит вам отправлять AJAX-запросы на ваш локальный хост по какой-то причине. –

+0

Yeap, я тестировал в Chrome. На самом деле, мне нужны только те элементы веб-страницы в приложении Phonegap. Есть ли способ получить их без дополнительной серверной логики? Почему на WP7 Silverlight я могу просто получать изображения или текст из HTML и на Phonegap нет? – Roman

ответ

1

Большинство браузеров придерживаются строгой политики одного и того же происхождения. Это означает, что вы не можете отправлять запросы Ajax на другой сервер. Хотя вы можете обойти его, это нецелесообразно делать с каждым клиентом.

Лучше всего было бы вызвать серверный скрипт, чтобы получить его для вас, и вернуть результаты в JavaScript.

+0

Вы имеете в виду, что я не могу напрямую загружать содержимое веб-страницы в приложение Phonegap? На самом деле мне нужны только некоторые изображения и текст, который находится на этом сайте. Есть ли способ javascript для извлечения этих элементов? – Roman

+0

@RomanTolmachev: JavaScript - неправильный инструмент для работы. Не забивайте гвоздь лопатой. –

1

Вы можете использовать jsonp для выполнения междоменных вызовов ajax, хотя вы не получите обратные вызовы с ошибками или таймаутом. jsonp поддерживается iQuery. http://api.jquery.com/jQuery.ajax/ Теория заключается в том, что вы добавляете тег скрипта на страницу с тщательно сформированным URL-адресом, который включает имя функции обратного вызова. Затем сервер обрабатывает запрос «ajax» и возвращает ответ в виде единственного параметра tp вашей функции обратного вызова.

+0

Проблема в том, что я не управляю этим сервером. Это не мой сайт. – Roman

+0

Затем вы должны проксировать вызовы AJAX через веб-сайт, которым вы управляете. – robrich

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