- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【ajax】 XMLHttpRequestオブジェクトを作成し連続でsend)
【ajax】 XMLHttpRequestオブジェクトを連続でsendする方法は?
このQ&Aのポイント
- 非同期の通信を連続して行う方法を教えてください。クライアントからサーバにある「hoge1.txt」をGETする処理を一つだけ呼び出すとうまくいきますが、二つ目の処理が実行されません。
- httpXmlRequest関数を使用して、非同期の通信を行う方法が分からず困っています。クライアントからサーバにある「hoge1.txt」をGETする処理を一つの関数で呼び出せばうまくいきますが、二つ目の処理が実行されません。
- 連続して非同期の通信を行う方法が分からず困っています。クライアントからサーバにある「hoge1.txt」をGETする処理を一つの関数で呼び出した場合、うまく動作しますが、二つ目の処理が実行されません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
同時に、の意味がよくわかりませんが、 open、sendした後、サーバーからの応答を受信、接続を終了する前に、別のデータを送受信したいのであれば、 XMLHttpRequestオブジェクトを2つ以上作成し、それぞれ個別にopenしなければなりませんが、 接続を終了したあとでもう一度openするのであれば、1つのオブジェクトを使い回し出来ます。 受信するファイル名が.txtで、statusのチェックが200またはelseしかありませんが、 304(更新されていない)が返っているのではないでしょうか。 var d=new Date(); uri+='?'+d.getTime(); httpObj.open('GET', uri); URIの後ろに日付などを入れて、常に最新のデータを受信するようにしたり、 Last-Modified-Ifヘッダを追加したり、 if(httpObj.status==200 || httpObj.status==304){ として、更新されていない場合でも受信完了として処理するか、 どちらかしておかないと行けないと思います。 頻繁に更新されるファイルでないのなら、304の処理を追加する方がいいと思います。
お礼
やりたかったことは、お察ししてくださいましたように >open、sendした後、サーバーからの応答を受信、接続を終了する前に、別のデータを送受信 になります。 XMLHttpRequestオブジェクトを2つ以上作成すればよいですね。。気がつきませんでした。。。 その他にも304の処理の説明など参考になりました。 ご丁寧な対応感謝しております。ありがとうございました。