jquery load()https http

时间:2015-02-10 10:37:47

标签: javascript jquery

我在使用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。这是否意味着问题无法解决?

2 个答案:

答案 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');