ミスチルの大名曲の数々が配信決定!! 31日間無料!!

jQueryでHTTP通信でjsonファイルを取得する場合、
ファイルが一つだけなら
$.ajax({
url: path,
type: "GET",
dataType: "json",
success: function(json, status, xhr) {
},
error: function(xhr, status, errorThrown) {
},
complete: function(xhr, status) {
}
});
のようにsuccessコールバックなどでデータを取得すればよいのですが
複数ファイルをajax()により取得し、全てのファイルダウンロードが完了したのを
待ってから処理を走らせたい場合どうすればよいのかわかりません。

任意の型のイベントを発生させて、それに対するハンドラ割り当てができればよいのですが
javascriptに不慣れなこともあり、調べてもその方法がわかりませんでした。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>任意の型のイベントを発生させて、それに対するハンドラ


>割り当てができればよいのですが
スクリプト内からイベントを発生させることは可能ですが(↓)、別にイベントを利用しなくてもよいのではないでしょうか?
https://developer.mozilla.org/ja/DOM/element.dis …

ajaxの状態を管理する配列かなにかを用意しておいて、リクエストするときに新しいフラグをセット、complete時にそのフラグをリセットするようにしておくとします。
その時に同時に他のフラグが全てリセットされているかをチェックして、全部リセットされていれば『全て完了』と判断してもよいのではないでしょうか。

ajaxのリクエストが時間差をもって行なわれるような場合は、その間に終了している可能性もあるので(それぞれで終了と判断してもよければ問題ありありませんが)、もう少し調整が必要になるのかも。
    • good
    • 0
この回答へのお礼

一応イベントは発生させれるのですね、調査不足でした。

確かにそれぞれでcompleteイベントがあがっているのだからフラグでその情報を管理すればいけますね。
ありがとうございました。

お礼日時:2011/05/02 10:13

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qチェックボックスで指定したものをダウンロード

JavaScriptの初心者です。
画像一枚毎にチェックボックスを作って、チェックした画像がダウンロードボタンをクリックすると保存されるようなHPを作りたいのですが、いろいろ調べているのですがどのようにすればよいのか見当がつきません。どうかご存じの方よろしくお願いします。

イメージは、フォトギャラリーのサムネイル画像の下にチェックボックスがあってチェックした画像のみダウンロードするという感じです。

CGIを使わずにできるかどうかも合わせてご教示いただけたらと思います。


<FORM NAME="form1">
<INPUT TYPE="checkbox" VALUE="1"> 画像(1)
<INPUT TYPE="checkbox" VALUE="2"> 画像(2)
<INPUT TYPE="checkbox" VALUE="3"> 画像(3)
<INPUT TYPE="checkbox" VALUE="4"> 画像(4)
<INPUT TYPE="checkbox" VALUE="5"> 画像(5)<BR>
<INPUT TYPE="button" onClick="BoxChecked(true);" VALUE="ダウンロード">
</FORM>

JavaScriptの初心者です。
画像一枚毎にチェックボックスを作って、チェックした画像がダウンロードボタンをクリックすると保存されるようなHPを作りたいのですが、いろいろ調べているのですがどのようにすればよいのか見当がつきません。どうかご存じの方よろしくお願いします。

イメージは、フォトギャラリーのサムネイル画像の下にチェックボックスがあってチェックした画像のみダウンロードするという感じです。

CGIを使わずにできるかどうかも合わせてご教示いただけたらと思います。


<FORM NAME="f...続きを読む

Aベストアンサー

>画像ファイルを一枚一枚zip形式にして

なるほど、でしたら以下でいけるかも。
ただ、ブラウザやユーザーの環境によっては誤動作の可能性があるので
ユーザーには注意を喚起してください
(ユーザビリティのためlabelを設定してありますがなくてもよいです)

<script>
function download(f){
for(var i=0;i<f.length;i++){
if(f[i].type=="checkbox" && f[i].checked){
var n=window.open(f[i].value);
}
}
}
</script>
<form>
<input type="checkbox" value="1.zip" id="img_1"><label for="img_1"><img src="1.jpg"></label>
<input type="checkbox" value="2.zip" id="img_2"><label for="img_2"><img src="2.jpg"></label>
<input type="checkbox" value="3.zip" id="img_3"><label for="img_3"><img src="3.jpg"></label>
<input type="button" value="download" onclick="download(this.form)">
</form>

>画像ファイルを一枚一枚zip形式にして

なるほど、でしたら以下でいけるかも。
ただ、ブラウザやユーザーの環境によっては誤動作の可能性があるので
ユーザーには注意を喚起してください
(ユーザビリティのためlabelを設定してありますがなくてもよいです)

<script>
function download(f){
for(var i=0;i<f.length;i++){
if(f[i].type=="checkbox" && f[i].checked){
var n=window.open(f[i].value);
}
}
}
</script>
<form>
<input type="checkbox" value="1.zip" id="img_1"><label for="img_1"...続きを読む

QjQueryで外部テキストファイルを読み込みたいがうまくいきません

jQueryで外部テキストファイルを読み込みたいと思っています。
https://ghweb.info/post-2976.htmlを参考にしてやってみたのですが、どうもうまくいきません。
上記参考サイトのサンプル1は読み込めます。

------------------ サンプル1 --------------------
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>jQueryでテキストファイルを表示する</title>
<script src="js/jquery.min.js"></script>
<script>
$(function() {
$("#read_text").load("sample_txt.txt");
});
</script>
</head>
<body>
<h3>.load()でテキストファイルを読込み</h3>
<div id="read_text"></div>
</body>
</html>

しかし、$.getで読み込むサンプル2がどうしても読み込めません。

------------------ サンプル2 --------------------
<script>
$(function() {
$.get("sample_txt.txt", function(data){
$("#read_text").text(data);
});
});
</script>

これで半日ほどハマっています。何か根本的に間違っているんでしょうか?
OSはLinux mint、ブラウザはfirefoxです。

jQueryで外部テキストファイルを読み込みたいと思っています。
https://ghweb.info/post-2976.htmlを参考にしてやってみたのですが、どうもうまくいきません。
上記参考サイトのサンプル1は読み込めます。

------------------ サンプル1 --------------------
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>jQueryでテキストファイルを表示する</title>
<script src="js/jquery.min.js"></script>
<script>
$(function() {
$("#read_text").load("sample_txt.txt");
});
</scri...続きを読む

Aベストアンサー

ANo1です。

私の環境(windows)でも、サーバでは当然ながら問題はありませんが、ローカルでは、IEはOSがアクセスを拒否、fxでは.load()は実行できますが、$.get()では処理でないという、似たような事象が発生しました。

$.get()の場合、fxではsuccessが返されましたが、何も表示されないので、さらに調べてみると、dataTypeを自動設定にしておくとXMLと解釈されているようで、テキストは空文字列になっているみたいでした。
(OSからどのようなヘッダが返されているのかなどはわかりません)

質問者様の環境ではparsererrorとのことですので、statusこそ異なりますが、同様の事象が起きているではないかと想像します。
.load()では、内部処理で(想像ですが)dataTypeをhtmlかtextに決め打ちしているのではないかと思い、(ANo1でも回答しましたように)textを明示的に指定してみたところ、$.get()でも、$.ajax()でも表示することができるようになりました。
質問者様の環境では、この方法でもうまくいきませんか?

とはいうものの、ローカルでのアクセスは、実行できたとしても正しいアクセスとは言えないでしょうから、どのような環境でも同じ結果になるなどという保証はないと思いますが。
(専門家ではなく、全くの門外漢ですので理屈や仕組みはさっぱりわかってません。(汗)

ANo1です。

私の環境(windows)でも、サーバでは当然ながら問題はありませんが、ローカルでは、IEはOSがアクセスを拒否、fxでは.load()は実行できますが、$.get()では処理でないという、似たような事象が発生しました。

$.get()の場合、fxではsuccessが返されましたが、何も表示されないので、さらに調べてみると、dataTypeを自動設定にしておくとXMLと解釈されているようで、テキストは空文字列になっているみたいでした。
(OSからどのようなヘッダが返されているのかなどはわかりません)

質問者様の環境...続きを読む

Q複数ファイルを連続でダウンロード

はじめまして
複数ファイルのダウンロードについて質問します。

チェックボックスで複数のファイル(PDFファイル)を選択して
ダウンロードができるようにしたいのです。
自分でも色々調べて、「PEAR」モジュール「File_Archive」を使い
選択した複数ファイルを圧縮してダウンロードできるようにしました。

しかし、要望として圧縮ファイルにはせず、
PDFファイルを選択した数だけ順番にダウンロードできるようにしたいのです。

自分でも「header関数」を使いダウンロードできるようにソースを書いてみましたが
一つ目のファイルしかダウンロードできず、2つ目からのダウンロードが始まりません。

【ソースの例】***********************************
//DOWNLOAD1
$file_location="/mnt/bisei_nfs/test1.txt";
$filename="test1.txt";

/*ファイルダウンロード処理*/
$filesize=filesize($file_location);
header("Accept-Ranges:none");
header("Content-Length:$filesize");
header("Content-Disposition:filename=\"$filename\"");
header("Content-Type:text/octet-stream");//IE
$fp=fopen("$file_location","rb");
@fpassthru($fp);

//DOWNLOAD2
$file_location="/mnt/bisei_nfs/test2.txt";
$filename="test2.txt";

/*ファイルダウンロード処理*/
$filesize=filesize($file_location);
header("Accept-Ranges:none");
header("Content-Length:$filesize");
header("Content-Disposition:filename=\"$filename\"");
header("Content-Type:text/octet-stream");//IE
$fp=fopen("$file_location","rb");
@fpassthru($fp);
*****************************************************
順番にダウンロードするには、どうしたらよいのでしょうか?

はじめまして
複数ファイルのダウンロードについて質問します。

チェックボックスで複数のファイル(PDFファイル)を選択して
ダウンロードができるようにしたいのです。
自分でも色々調べて、「PEAR」モジュール「File_Archive」を使い
選択した複数ファイルを圧縮してダウンロードできるようにしました。

しかし、要望として圧縮ファイルにはせず、
PDFファイルを選択した数だけ順番にダウンロードできるようにしたいのです。

自分でも「header関数」を使いダウンロードできるようにソース...続きを読む

Aベストアンサー

サーバー側の処理では無理
javascriptで複数回要求をだせばよいと思います

QEXCELファイルの複数ダウンロードについて

お世話になっております。

【環境】
ASP.NET(VB)
IIS

【質問】
ボタン押下時に2つの異なる帳票(A帳票.xls、B帳票.xls)を作成し、別々にダウンロード処理をさせたいのですが、上記2帳票を別々にダウンロードさせるための実装方法がわかりません。
1つの帳票でしたら、下記の実装方法でダウンロードをすることが確認できました。

Response.Clear()
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Response.AddHeader("content-disposition", "attachment; filename=A帳票.xls")
Response.WriteFile("D:\temp/A帳票.xls")

どなたかご存知の方がいらっしゃれば、ご教授ください。
よろしくお願いいたします。

お世話になっております。

【環境】
ASP.NET(VB)
IIS

【質問】
ボタン押下時に2つの異なる帳票(A帳票.xls、B帳票.xls)を作成し、別々にダウンロード処理をさせたいのですが、上記2帳票を別々にダウンロードさせるための実装方法がわかりません。
1つの帳票でしたら、下記の実装方法でダウンロードをすることが確認できました。

Response.Clear()
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Response.AddHead...続きを読む

Aベストアンサー

>Response.ClearContent()なのですが、A/B各帳票出力前に行っています。参考URLでは、ClearContentからCloseまでを1セットとしてまわしているようでしたので、以下のような実装としました。

私もできるんじゃないかと思って最初アドバイスしてましたが、よくよく考えると、一度、HTTPヘッダを設定した場合、その後のヘッダは無視されますね。

そうなると、ContentTypeには、multipart/mixed をセットした処理を実装する他ありません。

ただし、multipart/mixedは、ブラウザに依存する上に、IEやFireFoxで動く保障がありませんし、また、"application/vnd.ms-excel"のContextTypeを使っている以上、複数ファイルの同時ダウンロードは、HTTPの要件とブラウザの仕様でできないというのが回答になります。
そこは、HTTPの要件がもうそうなってしまっているので私たちの力ではどうにもできないということですね。

http://sonic64.com/2003-11-11.html

ということで、当初お話した、

「ダウンロードする際、JavaScriptなどを使って、2種類のWindowを開き(window.open)、1つはA帳票.xls、もう1つはB帳票用にaspxを分けてダウンロード処理を実装する」

これしか方法論はありません。
また、もっと携わられているWebサイトやWebシステムの機能仕様面をご自身や担当SEなどに相談し見直されることをお勧めします。

宜しくお願いします。

参考URL:http://sonic64.com/2003-11-11.html

>Response.ClearContent()なのですが、A/B各帳票出力前に行っています。参考URLでは、ClearContentからCloseまでを1セットとしてまわしているようでしたので、以下のような実装としました。

私もできるんじゃないかと思って最初アドバイスしてましたが、よくよく考えると、一度、HTTPヘッダを設定した場合、その後のヘッダは無視されますね。

そうなると、ContentTypeには、multipart/mixed をセットした処理を実装する他ありません。

ただし、multipart/mixedは、ブラウザに依存する上に、IEやFireFox...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング