我想使用javascript下载文件并解析它。我需要像php的file_get_contents()
这样的函数。我找了它,但我找不到任何东西。
更新:感谢您提供解决方案,但我忘了写AJAX没有解决这个问题,因为我没有任何访问远程地址的权限,并且有跨域请求问题。我也无法设置任何php代理,因为我的主机阻止访问fopen。我更喜欢纯粹的JavaScript解决方案。
PS:对不起,但问题实际上是重复的(我不知道)并且提供的解决方案here非常适合这个问题。
答案 0 :(得分:4)
查看XMLHttp请求
http://www.w3schools.com/xml/xml_http.asp
或JQuery.Here的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
答案 1 :(得分:3)
简短的问题,简短的回答:你可能想玩一些Ajax。通过调用本地php脚本创建file_get_contents()
并将其返回页面,或直接调用外部URL。您的浏览器可能不允许您这样做。
<强>加了:强>
您更新了问题,说明更喜欢纯粹的JavaScript解决方案。我不认为你可以,因为你试图获取不是JSONP的东西。
此外,你说你的主机阻止fopen()
,我曾经在他们做同样的主机上。我很惊讶地发现他们没有阻止use of 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()
,那么您可能会失败。
答案 2 :(得分:1)
看看XMLHttpRequest。它从Web异步下载文件。
如果您打算使用jquery
,请查看包含XMLHttpRequest的.ajax()。
答案 3 :(得分:0)
<强> I帧:强> 在页面上放置一个不可见的iframe,
<iframe id="frame1" style="display:none"></iframe>
触发下载[点击或其他一些eventt处理程序等],并设置Iframe的URL。
例如,"/location/file"
var iframe = document.getElementById("frame1");
iframe .src = "/location/file";
这将触发从浏览器下载。
另一种方法是简单地导航到下载URL,浏览器确定无法显示MIME类型并显示下载对话框。使用
window.location.href = "/location/file";