2016-05-19 3 views
1

Я пытаюсь создать еще один файл в формате JSON, через этот API, но я не могу, результат выходит так же, как []создать JSon динамический JQuery

мне нужно открыть API (https://api.cartolafc.globo.com/time/+time) для каждого значения массива TIMES, получить результаты в индивидуальном порядке и принимать только КЛЮЧИ мне нужно создать новый ARRAY/JSON

$(document).ready(function() { 

var result = []; 

var times = new Array("sport-clube-balao", "verdao-f-c-s-p", "kibeb-s-fc", "maria-fumaca-futebol-clube", "skolusa-fc", "fc-chikungunya", "furia-verde-1988-f-c", "deixaa-queto-f-c", "peixeraum", "espinoza-fc", "s-e-palestra-parente", "ca7fc", "lebucchi-fc", "impactos-fc", "tricolor-futebol-amigos", "augustinho-s-fs", "os-cara-de-egua", "porcos-locos-fc", "toniolotricolor-fc", "massa-clube", "made-china", "pipoca-jacare", "deprimeira-f-c", "rocca-uryntians", "hu100-f-c", "gabrukas-tln", "zaca-clube", "poderoso-rorinthians", "kbca-futebol-clube", "666fc", "e-c-corinthi-ns", "mpupo110-fc"); 

    $.each(times , function(key, val) { 
     $.ajax({ 
     type: 'GET', 
     url: 'https://api.cartolafc.globo.com/time/' + val, 
     format: 'json', 
     error: function() { 
      alert('Ixi parça! Ocorreu um erro ao exibir as parciais, aguarde alguns segundos'); 
     }, 
     dataType: 'json', 
     success: function (data) { 
      result.push({ 
        nome_time: data.time.nome, 
        nome_cartola: data.time.cartola, 
        escudo: data.time.url_escudo_png 
      }); 
      console.log(result); 
     } 
     }); 
    }); 
}); 

если я поставил console.log (результат); OutSite успеха Аякса я просто получить [] на пульте

Я хотел бы следующий результат

times:[0] 
{name:name, escudo:escudo, ...}, 
[1] 
{name:name, escudo:escudo, ...}, 
+0

@ 4castle я нужен объект, как этот [0] { имя : имя .... [1] { имя: имя .... – Caio

+1

Похоже, ваш код работает - https://jsfiddle.net/v61a47L5/ – Steve

+0

@Steve no. Я хочу вернуть все данные сразу, если вы посмотрите на консоль, мой код возвращает 1 объект на каждом шаге цикла, как и [object], и [object] [object], мне просто нужен последний – Caio

ответ

0

Это возвращение [] потому что все $ .ajax работают параллельно.

Использование $.when.apply() и передавая все запросы в, по существу, ждет всех запросов, а затем запускает console.log(result)

$(document).ready(function() { 
 

 
    var result = []; 
 

 
    var times = new Array("sport-clube-balao", "verdao-f-c-s-p", "kibeb-s-fc", "maria-fumaca-futebol-clube", "skolusa-fc", "fc-chikungunya", "furia-verde-1988-f-c", "deixaa-queto-f-c", "peixeraum", "espinoza-fc", "s-e-palestra-parente", "ca7fc", "lebucchi-fc", "impactos-fc", "tricolor-futebol-amigos", "augustinho-s-fs", "os-cara-de-egua", "porcos-locos-fc", "toniolotricolor-fc", "massa-clube", "made-china", "pipoca-jacare", "deprimeira-f-c", "rocca-uryntians", "hu100-f-c", "gabrukas-tln", "zaca-clube", "poderoso-rorinthians", "kbca-futebol-clube", "666fc", "e-c-corinthi-ns", "mpupo110-fc"); 
 

 
    var requests = []; 
 

 
    $.each(times, function(key, val) { 
 
    requests.push($.ajax({ 
 
     type: 'GET', 
 
     url: 'https://api.cartolafc.globo.com/time/' + val, 
 
     format: 'json', 
 
     error: function() { 
 
     alert('Ixi parça! Ocorreu um erro ao exibir as parciais, aguarde alguns segundos'); 
 
     }, 
 
     dataType: 'json', 
 
     success: function(data) { 
 
     result.push({ 
 
      nome_time: data.time.nome, 
 
      nome_cartola: data.time.cartola, 
 
      escudo: data.time.url_escudo_png 
 
     }); 
 

 
     } 
 
    })); 
 
    }); 
 
    $.when.apply(null, requests).done(function() { 
 
    console.log(result); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Perfect @steve, спасибо – Caio

0

Добавить

var x = {times : result} 
JSON.stringify(x); 

после $.each(times , function(key, val){}

+0

просто добавьте , но, не работай. если я положил console.log (результат); outsite успех ajax я просто получаю [] на консоли – Caio

Смежные вопросы