在不使用jQuery的情况下,将不同域的网站的一部分下载到JavaScript中的变量?

时间:2013-01-12 16:35:22

标签: javascript xmlhttprequest

摘要:

我希望将一个网页的第一个4kB(实际上是MP3,但无所谓)从另一个域保存到JavaScript中的变量,理想情况下没有jQuery,因为我不需要jQuery用于其他任何内容我的页面。 这是我之前在python应用程序中用于实现相同目标的内容:

host = 'http://www.wikipedia.org/somepath/tosome/file.mp3'
req = urllib2.Request(host, headers={'User-Agent' : "Magic Browser"})
response = urllib2.urlopen(req).read(4*1024)

背景:

我的目标是获取几千字节的MP3文件(来自不同的域名),这样我就可以从中删除ID3信息。然而,经过大量的谷歌搜索,并搞乱了xmlhttprequests,jsonp和其他一些东西,我仍然无法找到满足我所有要求的东西。 阅读此帖后Basic example of using .ajax() with JSONP? 真的很有帮助,但我似乎无法弄清楚如何限制类似的东西的回调大小(可能限制脚本源大小?)我真的不想要包含jQuery库。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

注意:我发布的解决方案包含javascript + php。但是您可以使用任何其他编程语言,例如python(只有语法更改。而不是逻辑)。

。使用Ajax调用服务器中的php文件

。在你的服务器端php文件:

使用curl读取跨域html。

$url = "http://www.google.com;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);

。然后使用PHP的DOM对象模型来解析HTML - (http://php.net/manual/en/domdocument.loadhtml.php)。

例如:

$domObj = new DOMDocument;
$domObj->loadHTML( $output);
$divs = $domObj->getElementsByTagName('div');

。将o / p html内容返回给客户端。

。最后将ajax响应(html)收集到本地javascript变量中。