我在使用jQuery load()函数从另一个页面获取元素时遇到问题。我只能将客户端脚本添加到页面A(https://landing.pkr.com/en/bonus/)并尝试从页面B(http://letsplay.pkr.com/en/)中抓取一个我无法编辑的元素。
我在第A页上有以下代码:
$('#playerNumber').load('https://letsplay.pkr.com/en/ div.players.roundContainerBorderNone h2');
页面A运行在https协议上。页面B在http和https上运行。
我最初的问题是我试图从页面B中获取元素。代码无法正常工作,因为协议存在冲突,但是我将协议更改为https并且主要对问题进行了排序。
唯一的例外是当我尝试使用隐身窗口在Chrome中查看该页面时。由于某种原因,代码无法正常运行。有人可以向我解释为什么会这样,以及它是否值得关注?这个问题有解决方案吗?
非常感谢
---补充评论------------------------------------------ ------------
经过进一步调查后发现,B页不支持https。这是否意味着问题无法解决?
答案 0 :(得分: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.');
}
});
答案 1 :(得分:0)
问题似乎是跨域访问。您可以从URL中省略该方案,默认情况下浏览器采用当前页面正在使用的方案。
尝试以下方法:
$('#playerNumber').load('letsplay.pkr.com/en/ div.players.roundContainerBorderNone h2');