質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

1回答

1776閲覧

【jQuery】$.when ajaxの複数同時処理の返り値が取得できない

nakamu

総合スコア82

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2021/05/25 03:19

個々でajaxを実行するとうまく行くのですが、$.whenを使った複数になると返り値がundefinedになります。

jquery

1 jqXHRList.push( 2 $.ajax({ // $.ajaxの戻り値を配列に格納 3 url: 'https://web~~~', 4 headers: { 5 'Accept': "text/plain", 6 'APIKEY': "key" 7 }, 8 type: 'post', 9 data: JSON.stringify({ 10 key:value 11 }) 12 }) 13 ); 14 jqXHRList.push( 15 $.ajax({ // $.ajaxの戻り値を配列に格納 16 url: 'https://web~~~', 17 headers: { 18 'Accept': "text/plain", 19 'APIKEY': "key" 20 }, 21 type: 'post', 22 data: JSON.stringify({ 23 key:value 24 }) 25 }) 26 ); 27 28 $.when.apply($, jqXHRList).done((base64) => { 29 30 31 // base64が1個だけ返ってくる。argumentsで取得するはずなのに 32 console.log(base64); 33 34 35 36 var json = []; 37 var statuses = []; 38 var jqXHRResultList = []; 39 // 結果は仮引数に可変長で入る **順番は保証されている** 40 // 取り出すには arguments から取り出す 41 // さらにそれぞれには [data, textStatus, jqXHR] の配列になっている 42 for (var i = 0; i < arguments.length; i++) { 43 console.log(arguments); 44 var result = arguments[i]; 45 console.log(result['data']); 46 json.push(result[0]); 47 statuses.push(result[1]); 48 jqXHRResultList.push(result[3]); 49 } 50 51 json;// => リクエストの配列と同じ順番で結果を参照できる 52 console.log(json); 53 54 }).fail(() => { 55 console.log('失敗'); 56 });

返り値
返り値

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

javascript

1$(function(){ 2 var d=[]; 3 d.push($.ajax({url:"sample.php?s=2"})); 4 d.push($.ajax({url:"sample.php?s=3"})); 5 d.push($.ajax({url:"sample.php?s=1"})); 6 $.when.apply(null,d).then((...arg)=>{ 7 console.log(arg.map(x=>x[0])); 8 }); 9});

//sample.php

PHP

1<?PHP 2$s=filter_input(INPUT_GET,"s"); 3sleep($s); 4print $s;

投稿2021/05/25 04:23

yambejp

総合スコア114883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/05/25 04:27

fetch/Promiseのほうが楽かも var d=[]; d.push(fetch("sample.php?s=2").then(res=>res.text())); d.push(fetch("sample.php?s=3").then(res=>res.text())); d.push(fetch("sample.php?s=1").then(res=>res.text())); Promise.all(d).then(console.log);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問