Ajax ile dönen json veriyi döngüye sokmak
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>');
});
});
}
}
});
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.