【发布时间】:2015-06-26 02:20:48
【问题描述】:
我正在编写一个简单的单页网络应用程序。该应用程序需要将另一个站点的整页 html 文本加载到一个字符串中。我有另一个网站的网址。如何将此外部页面的整页文本拉入javascript中的字符串?
【问题讨论】:
我正在编写一个简单的单页网络应用程序。该应用程序需要将另一个站点的整页 html 文本加载到一个字符串中。我有另一个网站的网址。如何将此外部页面的整页文本拉入javascript中的字符串?
【问题讨论】:
实际上,可以通过 javascript 来实现。 如果另一个站点启用了 CORS,您可以使用 ajax 获取远程 url 内容。
如果没有启用 CORS,您可以使用自己的服务器来获取远程 url 内容。因此,您可以向您的服务器发送 ajax 请求,您的服务器将获取远程内容并将其作为对您的 ajax 的响应。
另外,你可以在你的服务器上使用 JSONP,或者如果你没有你的服务器,你可以找到为你提供这种功能的在线服务。
在这里,我创建了一个通过免费在线服务和 JSONP 获取远程 url 的示例:http://jsfiddle.net/pisamce/2t1gz24x/
var res = document.getElementById('res'),
url = document.getElementById('url')
myVar = '';
window.show = function (jsonp) {
myVar = jsonp[0].body; //assign response to your variable
res.innerText = myVar;
}
document.getElementById('btn').addEventListener('click', function () {
var s = document.createElement('script');
s.src = 'http://jsonpwrapper.com/?urls%5B%5D=' + encodeURIComponent(url.value) + '&callback=show';
document.getElementsByTagName('head')[0].appendChild(s);
});
<input id="url" type="text" value="http://example.com" />
<input id="btn" type="button" value="Get page html" />
<pre id="res"></pre>
【讨论】:
不,您不能在 javascript 中执行此操作。由于CORS,浏览器不允许您调用此类调用。
您可以改为在服务器端执行此操作。点击那里的服务器提取数据并响应您的网站。
【讨论】: