2015-02-10 79 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 2015-02-10 10:39:59

+3

我想你會被[同源策略]阻止(http://en.wikipedia.org/wiki/Same-origin_policy)。您需要使用服務器端代理。檢查控制檯以獲取更多信息。如果您看到與CORS標題有關的錯誤,那麼這肯定是問題所在。 – 2015-02-10 10:40:53

+0

可能重複的[Jquery .load同源策略](http://stackoverflow.com/questions/2453981/jquery-load-same-origin-policy) – Liam 2015-02-10 10:42:10

回答

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() – 2015-02-10 11:23:43

+0

嗨Raja。感謝您的持續幫助。不幸的是我仍然看到這個問題。這次有一個非常不同的錯誤 - 混合內容:'https://landing.pkr.com/en/bonus/?nonMobile=true'頁面通過HTTPS加載,但請求一個不安全的XMLHttpRequest端點'http:/ /letsplay.pkr.com/en/%20div.players.roundContainerBorderNone%20h2' 。此請求已被阻止;內容必須通過HTTPS提供。 – 2015-02-10 11:34:22

+0

Plz檢查此代碼。 – 2015-02-10 11:46:32

0

這個問題似乎是跨域訪問。您可以從url中省略該方案,瀏覽器默認採用當前頁面正在處理的方案。

嘗試以下:

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

沒有運氣在這一個恐怕要麼Ankit。當您更新您的問題,即頁面B不支持https,並且瀏覽器不支持進行跨域調用時,與之前的 – 2015-02-10 12:28:40

+0

相同的控制檯錯誤。請看看這[問題](http://stackoverflow.com/questions/8414786/javascript-cross-domain-call-call-from-http-to-https) – 2015-02-10 12:38:17