2015-02-10 2 views
0

У меня проблема с захватом элемента с другой страницы с помощью функции jQuery load(). Я могу только добавить клиентский скрипт на страницу A (https://landing.pkr.com/en/bonus/) и пытаюсь захватить элемент со страницы B (http://letsplay.pkr.com/en/), которую я не могу редактировать.jquery load() https http

У меня есть следующий код на странице A:

$('#playerNumber').load('https://letsplay.pkr.com/en/ div.players.roundContainerBorderNone h2'); 

Страница A работает по протоколу HTTPS. Страница B работает как на http, так и на https.

Моя первоначальная проблема заключалась в том, что я пытался захватить элемент со страницы B. Код не работал, потому что протоколы были конфликтующими, однако я изменил протокол на https и в основном сортировал проблему.

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

Большое спасибо

--- Дополнительный комментарий ----------------------------------- -------------------

После дальнейших исследований выясняется, что страница B не поддерживает https. Означает ли это, что проблема не может быть решена?

+0

Что ошибка вы получили в консоли? – VMAtm

+3

Я бы предположил, что вы заблокированы [той же политикой происхождения] (http://en.wikipedia.org/wiki/Same-origin_policy). Вам нужно использовать прокси-сервер на стороне сервера. Проверьте консоль для получения дополнительной информации. Если вы видите ошибку, относящуюся к заголовкам CORS, то это определенно проблема. –

+0

Возможный дубликат [Jquery .load То же исходное правило] (http://stackoverflow.com/questions/2453981/jquery-load-same-origin-policy) – Liam

ответ

0

Plz попробуйте это.

$.support.cors = true; 
$.ajax({ 
    type: 'GET', 
    dataType: "text", 
    crossDomain: true, 
    url: "http://letsplay.pkr.com/en/ div.players.roundContainerBorderNone h2", 
    success: function (responseData, textStatus, jqXHR) { 
     var _data = JSON.parse(
      responseData.replace(
       '{"AuthenticateUserResult":"', '' 
      ).replace('}"}', '}') 
     ); 
     $('#playerNumber').html(_data); 
    }, 
    error: function (responseData, textStatus, errorThrown) { 
     alert('POST failed.'); 
    } 
}); 
+0

На этот раз я пытаюсь отправить вызов ajax вместо jquery.load() –

+0

Привет, Раджа. Спасибо за вашу дальнейшую помощь.К сожалению, я все еще вижу проблему. На этот раз с очень немного другой ошибкой - Смешанное содержимое: страница на странице https://landing.pkr.com/ru/bonus/?nonMobile=true была загружена через HTTPS, но запросила небезопасную конечную точку XMLHttpRequest «http://letsplay.pkr.com/en/%20div.players.roundContainerBorderNone%20h2. Этот запрос заблокирован; содержимое должно быть передано через HTTPS. –

+0

Plz проверить этот код. –

0

Эта проблема, по-видимому, относится к междоменному доступу. Вы можете опустить схему из URL-адреса, браузер по умолчанию принимает схему, с которой работает текущая страница.

попробуйте ниже:

$('#playerNumber').load('letsplay.pkr.com/en/ div.players.roundContainerBorderNone h2'); 
+0

Не повезло на этом, я боюсь либо Анкита. Такая же ошибка консоли, как и раньше, –

+0

, поскольку вы обновили свой вопрос о том, что страница B не поддерживает https, а браузер не поддерживает выполнение перекрестных доменных вызовов. Пожалуйста, посмотрите на этот [вопрос] (http://stackoverflow.com/questions/8414786/javascript-cross-domain-call-call-from-http-to-https) –