麻烦在javascript代码中消耗html源代码

时间:2014-11-13 17:11:34

标签: javascript jquery html ajax json

我正在尝试复制WhateverOrigin服务,如下所示:

http://stackshare-importer.herokuapp.com/get_website?url=http://firebase.com


然而,当我尝试在浏览器上运行它时,这个完全适用于WhateverOrigin的代码不再适用于我的虚拟服务:

$.getJSON("http://stackshare-importer.herokuapp.com/get_website?url=" + import_url + "&callback=?", function(data) {
    console.log(data);
});
  

未捕获的SyntaxError:意外的标记<

enter image description here

我只想使用html源代码字符串,我该如何实现呢?


编辑:

也试过这个并得到相同的结果:

$.ajax({
  url: "http://stackshare-importer.herokuapp.com/get_website?url=" + import_url + "&callback=?",
  jsonp: "callback",
  dataType: 'jsonp',
  success: function(response) {
    console.log(data);
  }
});

1 个答案:

答案 0 :(得分:1)

像WhateverOrigin和AnyOrigin这样的网站会获得您想要的页面并将其转换为JSON / JSONP对象,从而允许它跨域使用。

如果您尝试复制这些网站正在做的事情,您将需要创建一个PHP脚本,将该页面作为变量获取,然后将其转换为JSON并将其输出到JSONP对象中。

将您网页上的PHP“get_website”更改为:

<?php

    $page = file_get_contents($_GET['url']);
    echo 'jsonCallback({"html":'.json_encode($page, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_QUOT).'});';

?>

然后在任何网站上使用此HTML / JS输出JSON:

<div class="stuffhere"></div>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script>
$("document").ready(function () {
    $.ajax({
        type: 'GET',
        url: 'http://stackshare-importer.herokuapp.com/get_website?url=http://firebase.com',
        jsonpCallback: 'jsonCallback',
        contentType: "application/json",
        dataType: 'jsonp',
        success: function(json) {
            alert(json.html);
            $("div.stuffhere").html(json.html);
        }
    });
});
</script>

..它会起作用!