個々で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 });
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/25 04:27