6

重複の可能性:
Javascript は Web ページのソースを読み取ることができますか?

JavaScript を使用してファイルをダウンロードし、解析したいと考えています。php のような関数が必要file_get_contents()です。探しましたが、何も見つかりませんでした。

更新: 解決策に感謝しますが、リモート アドレスにアクセスできず、クロスドメイン要求の問題があるため、AJAX はこの問題に適していないことを書き忘れていました。ホストが fopen へのアクセスをブロックしているため、php プロキシも設定できません。私は純粋な 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スクリプトを呼び出しfile_get_contents()て、ページを作成して返すか、外部URLを直接呼び出します。ただし、ブラウザでこれを実行できない場合があります。

追加:純粋なJavaScriptソリューション を好むという質問を更新しました。JSONP以外のものをフェッチしようとしているので、できないと思います。また、あなたはあなたのホストブロックを言いますfopen()、私は彼らが同じことをしたホスティングにいました。それらがソケットの使用をブロックしなかったことに驚いた。これが私の回避策である:

$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を見てください。Web からファイルを非同期的にダウンロードします。

を使用する予定がある場合jqueryは、XMLHttpRequest をラップする .ajax() を参照してください。

于 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";

これにより、ブラウザからのダウンロードがトリガーされます。

もう 1 つの方法は、単純にダウンロード URL に移動することです。ブラウザは、MIME タイプを表示できないことを認識し、ダウンロード ダイアログを表示します。使用する

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