2016-04-14 5 views
0

私はすべての視聴者(チャット中の人)を、特定のチャンネルからtweetの配列に配列しようとしています。JSONP呼び出しから複数の配列を1つの配列に配置するのに役立つ必要があります

  • モデレーター
  • 職員
  • 私が置きたい管理者
  • global_mods
  • 視聴者

JSONPコール作品が、単収縮APIには、いくつかの配列を返します。これらの配列にあるすべてのユーザー名を単一のarすなわち、 "peopleinchat")。

var peopleinchat= [];

そして$.merge()を使用して、この配列に人々の後続の各列(グループ)を追加します。

私のアプローチは、最初の配列を宣言しました。私はそれが動作するようになることはできません...私は "TypeError:不明なプロパティ '長さ'を読み取ることができません。あなたは私を助けることができます?

ありがとうございます!ほとんどが

$.ajax({ 
 
    url: "https://tmi.twitch.tv/group/user/batuhanbuyukakkan/chatters", 
 

 
    // The name of the callback parameter, as specified by the YQL service 
 
    jsonp: "callback", 
 

 
    // Tell jQuery we're expecting JSONP 
 
    dataType: "jsonp", 
 

 
    // Work with the response 
 
    success: function(response) { 
 

 
    var peopleinchat = []; 
 

 
    $.each(response, function(index, data){ 
 

 
     $.each(data.chatters, function(index, group){ 
 

 
     $('.viewers').append(index + ': ' + group); 
 
     $('.viewers').append('<br>'); 
 
     
 
     $.merge(peopleinchat, group); 
 

 
     }); 
 

 
    }); 
 
    
 
    $('.array_result').append(peopleinchat); 
 

 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="viewers"></div> 
 
<br> 
 
<br> 
 
<div class="array_result"></div>

+0

私は理解していません。これは、異なる配列を1つの大きな配列に入れることには関係していないようですが、コードが最後の各ループよりも実行されないようにします。S –

答えて

1

- 私はあなたの主な問題は、あなたがあなたのsuccessコールバックへのresultパラメータの適切な形状に対処しなかったことだったと思います。 undefined`のプロパティを読み取ることができません「長」:以下のスニペットは動作します:私はこの `TypeError例外を得ている理由

$.ajax({ 
 
    url: "https://tmi.twitch.tv/group/user/batuhanbuyukakkan/chatters", 
 

 
    // The name of the callback parameter, as specified by the YQL service 
 
    jsonp: "callback", 
 

 
    // Tell jQuery we're expecting JSONP 
 
    dataType: "jsonp", 
 

 
    // Work with the response 
 
    success: function(response) { 
 
    var peopleinchat = []; 
 

 
    $.each(response.data.chatters, function(index, data){ 
 

 
     $('.viewers').append(index + ': ' + data); 
 
     $('.viewers').append('<br>'); 
 
     
 
     $.merge(peopleinchat, data); 
 

 
    }); 
 
    
 
    $('.array_result').append(peopleinchat); 
 

 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="viewers"></div> 
 
<br> 
 
<br> 
 
<div class="array_result"></div>

+0

ありがとうございます。どうやら、私はdata.chattersをループしていたので、TypeErrorを取得していましたが、この変数はeach()ループのたびに存在しませんでした。チャットはデータの子の1つだけだったからです。あなたのソリューションに感謝します!これは私が今思い描いたよりも優れています。すべてを 'if(data.chatters){}'に埋め込むことです。 –

+0

質問に従う: 'peopleinchat'変数をこのajax呼び出しの外で動作させるにはどうすればよいですか? 'var peopleinchat = [];'をトップに移動しようとしましたが、それはやっていません。 ajax呼び出し中にデータに入れられたデータは、まだajax呼び出しの外部では利用できません。 –

+0

編集:問題は、AJAX呼び出しの実行時間が長くかかるため、結果を使用するすべてがsuccess {}セクションになければならないということでした。修正しました。 –

関連する問題