6

可能重复:
Javascript 可以读取任何网页的源代码吗?

我想使用 javascript 下载文件并解析它。我需要一个像 php 的函数file_get_contents()。我寻找它,但我找不到任何东西。

更新:感谢您的解决方案,但我忘了写 AJAX 不适合这个问题,因为我无权访问远程地址并且有跨域请求问题。我也无法设置任何 php 代理,因为我的主机阻止了对 fopen 的访问。我更喜欢纯 JavaScript 解决方案。

PS:对不起,但这个问题确实是重复的(我不知道),这里提供的解决方案非常适合这个问题。

4

4 回答 4

6

查看 XMLHttp 请求

http://www.w3schools.com/xml/xml_http.asp

或者 JQuery 的 load、$.get、$.post 和 $.ajax 方法。这里是一个示例

var request = new XMLHttpRequest(); 
request.open("GET", 'http://www.url.com');
request.onreadystatechange = function() { 
if (request.readyState === 4 && request.status === 200) {

//response handling code

}
};
request.send(null); // Send the request now
于 2012-09-26T19:43:15.680 回答
4

简短的问题,简短的回答:您可能想玩一些 Ajax。通过调用本地 php 脚本制作 afile_get_contents()并将其返回页面,或者直接调用外部 URL。您的浏览器可能不允许您这样做。

补充: 您更新了您的问题,说您更喜欢纯 javascript 解决方案。我不认为你可以,因为你试图获取不是JSONP的东西。另外,您说您的主机阻塞fopen(),我曾经在他们做同样事情的主机上。我惊讶地发现他们没有阻止使用 sockets,这是我的解决方法:

$server = "www.example.com";
$path = "/path/index.html";
$type = "HTTP/1.1";

$fp = fsockopen($server, 80, $errno, $errstr, 30);
if (!$fp) echo "$errstr ($errno)<br />\n";
else {
    $out  = "GET $path $type\r\n";
    $out .= "Host: $server\r\n";
    $out .= "User-Agent: Mozilla 4.0\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    $contents = "";
    while (!feof($fp)) $contents .= fgets($fp, 128);
    fclose($fp);
    echo $contents;
}

我意识到您不想要 PHP 代理解决方案,我认为您可能别无选择。试试看,对我很有用。如果您的主机也被阻止fsockopen(),您可能会不走运。

于 2012-09-26T19:40:14.057 回答
2

看看XMLHttpRequest。它从网络上异步下载文件。

如果您打算使用jquery,请查看 .ajax(),它包装了 XMLHttpRequest。

于 2012-09-26T19:38:31.420 回答
1

iframe: 在您的页面上放置一个不可见的 iframe,

<iframe id="frame1" style="display:none"></iframe>

触发下载[点击或其他事件处理程序等],并设置 iframe 的 URL。例如 ,"/location/file"

var iframe =  document.getElementById("frame1");
iframe .src = "/location/file";

这将触发从浏览器下载。

另一种方法是简单地导航到下载 url,浏览器发现 MIME 类型无法显示并会显示一个下载对话框。利用

window.location.href = "/location/file";
于 2012-09-26T19:59:25.313 回答