2

jquery-ajaxを使用してサーバーからバイナリファイルをダウンロードしようとしましたが、最終的にあきらめました。そのため、代わりに XMLHttpRequest を使用しようとしています。ただし、簡単な例を機能させることさえできません。

奇妙なことに、このコードは何もしていないようです。これをw3schoolsからコピーして貼り付けましたが、この例は他の多くの例とほぼ同じです。クロムでもFFでも機能しません:

 var xhttp = new XMLHttpRequest();
 xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
       // Action to be performed when the document is read;
    }
};
xhttp.open("GET", '/blah/blah/output.png', true);
xhttp.send();

xhttp.readyState が one に等しいopen()ステートメントでonreadystatechange 関数を 1 回だけ実行しますが、 send()ステップでは実行しません。何もしないのではなく、少なくとも何らかのエラーをスローすると考えるべきです。

また、実験として、意図的に open() に悪い URL を入力しましたが、応答がありませんでした。

誰かが私が間違っているかもしれないことを教えてもらえますか?

どうもありがとうございます。

4

1 に答える 1

2

あなたのコードは私には正しいように見えますが、これは何らかの外部原因を示しています。

コードは実行コンテキストの最後まで流れていますか? ブラウザは、エンジンがブラウザに戻るまでネットワーク リクエストを保持します。

例えば:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
   // Action to be performed when the document is read;
  }
};
xhttp.open("GET", '/blah/blah/output.png', true);
xhttp.send();

while(true){}

コールを送信することはありません。

于 2016-01-05T20:47:27.707 に答える