2016-04-14 15 views
0

Tüm görüntüleyenleri (sohbet içindeki kişiler) belirli bir kanaldan twitch'ten bir diziye almaya çalışıyorum.Bir JSONP çağrısından birkaç dizinin tek bir diziye yerleştirilmesinde yardıma mı ihtiyacınız var

JSONP çağrı çalışır, ancak Twitch API döndüren birkaç diziler:

  • moderatörler
  • personel
  • yöneticileri
  • global_mods
  • izleyiciler ben koymak istiyorum

Bu dizilerdeki tüm kullanıcı adları, tek bir ar içine ışın (ör.) "Peopleinchat".

var peopleinchat= [];

Sonra $.merge() kullanarak bu diziye insanın sonraki her dizi (grup) ekleyin: My yaklaşım

ilk diziyi bildirmek oldu. Ancak bunu işe alamıyorum ... "TypeError: undefined öğesinin uzunluğunu okuyamıyor" alıyorum. Bana yardım edebilir misin?

Teşekkürler! Neredeyse

+0

bu 'TypeError alıyorum neden anlamıyorum: undefined' malı 'uzunluğunu' okunamıyor. Farklı dizileri daha büyük bir diziye koyma ile ilgili görünmüyor, ancak kodun her son döngüden daha fazlasını gerçekleştirmesini engelliyor: S –

cevap

1

$.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>

- Ben senin asıl sorun sizin success geri arama için result parametresinin doğru şekli ile anlaşma olmadığını düşünüyorum. işlerin altına pasajı:

$.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

Teşekkürler, haklısınız. Görünüşe göre, TypeError'ı alıyorum çünkü data.chatters üzerinden geçiyordum, ancak bu değişken her bir() döngüsünde her zaman mevcut değildi, çünkü chat yapan kişiler verilerin yalnızca bir tanesiydi. Çözümünüz için teşekkürler! Şu an ortaya çıktığımdan çok daha iyi: her şeyi bir 'if (data.chatters) {} 'içine gömmek. –

+0

Takip eden soru: Bu ajax çağrısının dışında çalışmak için "peopleinchat" değişkenini nasıl alabilirim? Var insanları -hattına [[]; 'üstüne taşımaya çalıştım ama bunu yapmıyor. Ajax çağrısı sırasında içine konulan veriler ajax çağrısı dışında hala mevcut değildir. –

+0

DÜZENLEME: sorun değil, sorun AJAX çağrısı yürütmek için daha uzun sürüyordu, bu yüzden sonucu kullanan her şeyin başarı {} bölümünde olması gerekiyordu. Onu düzeltti. –

İlgili konular