我正在尝试复制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:意外的标记<
我只想使用html源代码字符串,我该如何实现呢?
编辑:
也试过这个并得到相同的结果:
$.ajax({
url: "http://stackshare-importer.herokuapp.com/get_website?url=" + import_url + "&callback=?",
jsonp: "callback",
dataType: 'jsonp',
success: function(response) {
console.log(data);
}
});
答案 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>
..它会起作用!