v2.5.2
Giriş yap

Ajax ile dönen json veriyi döngüye sokmak

0kan87
408 defa görüntülendi

Bir arama kutusu yapmaya çalışıyorum. Ajax ile dönen json verim şu şekilde;

{
    "link": [
        "http://localhost/lorem-ipsum-nedir.html",
        "http://localhost/lorem-ipsum-nedir.html",
        "http://localhost/lorem-ipsum-nedir.html",
        "http://localhost/lorem-ipsum-nedir.html",
        "http://localhost/lorem-ipsum-nedir.html"
    ],
    "baslik": [
        "Lorem Ipsum Nedir?",
        "Lorem Ipsum Nedir?",
        "Lorem Ipsum Nedir?",
        "Lorem Ipsum Nedir?",
        "Lorem Ipsum Nedir?"
    ]
}

İşin içinden çıkamadığım döngüde link ve baslik kısmını yerleştiremediğim yer ise burası

$.ajax({
      type:"post",
      url:"arama-sonuclari-ajax",
      data: konu,
      dataType:"json",
      success: function(cevap){
        if (cevap.sonuc == "") {
          $("#sonuc").fadeOut();
        }else{
          
          $.each(cevap, function() {
            $.each(this, function(k) {
              $("#sonuc").fadeIn().html('<a href="'+cevap.link+'">'+cevap.baslik+'</a><br>');
            });
          });
        }
      }
    });
munzevi
915 gün önce

en temel hatan başlangıç derinliğinde kalmış olman, bu döngü 2 kere sonuç ürettikten sonra tamamlanıyor. ayrıca fade kullanımını sonda yapman lazımdı ki, döngüde fade, show gibi gecikmeli komutlar aslında stabil çalışmıyor hiç kullanmasan daha iyi.

let link = cevap.link.length == cevap.baslik.length ? cevap.baslik.length : 0;
// yukarıdaki koşul yerine let link = cevap.link.length; de kullanabilirsin.
for (let x = 0; x < link; ){
    $('#sonuc').append(`<a href="${cevap.link[x]}">${cevap.baslik[x]}</a><br>`);
    x++;
}

bence json verinide güncelle, link ile baslık yanyana olsunlar gerek yok ayrı anahtarlar tanımlamaya. 0 [link: link, anahtar: anahtar] gibi. sen 0 a link 1 e anahtar demişsin.