• 20-05-2022, 15:58:08
    #1
    merhaba, ajax ile dosyaya post ediyorum ve oradan aldığım json datayı aşağıda ki şekilde parse ediyorum

     $.ajax({
                                type: "POST",
                                url: 'ajax.php',
                                data: {soru:soru, cevap:id, soruid:soruid},
                                success: function(cevap){
    
                                    var jsondata = JSON.parse(cevap);
    
                                    console.log(jsondata);
    
    
    
                                }
                            });
    ancak şöyle bir sorun var ben burda if ile json data içinde ki değere göre işlem yaptırıcam json içinde ki değerleri nasıl if koşulları sağlarım?
  • 20-05-2022, 16:07:39
    #2
    console da yazan dayayı eklerseniz ona göre örnekli cevaplayalım, jsonData['sonuc'] gibi yda duruma göre gelen verinin tipine göre check edilebilir.
  • 20-05-2022, 16:10:27
    #3
    @dnaz; evet bu şekilde aldım şimdi teşekkür ederim bir sorum daha olacak sana müsaitsen php de soru="<?=$i?>" bu şekilde attr olarak dinamik döndürüyorum ve post ettiğimde bu veriyi gelen json veriden tekrar alıyorum ve şöyle bir koşul koşuyorum

    if (jsondata['soru'] == '1') {
                     // aksiyonlarımı buraya yazıcam                   
    }
    aksiyonlarımı yazarken bu soru="<?=$i?>" alanındakilerin arka plan rengini değiştiricem bunu nasıl dinamik veri varken yapabilirim?
  • 20-05-2022, 16:17:05
    #4
    emirkrgz adlı üyeden alıntı: mesajı görüntüle
    @dnaz; evet bu şekilde aldım şimdi teşekkür ederim bir sorum daha olacak sana müsaitsen php de soru="<?=$i?>" bu şekilde attr olarak dinamik döndürüyorum ve post ettiğimde bu veriyi gelen json veriden tekrar alıyorum ve şöyle bir koşul koşuyorum

    if (jsondata['soru'] == '1') {
                     // aksiyonlarımı buraya yazıcam                  
    }
    aksiyonlarımı yazarken bu soru="<?=$i?>" alanındakilerin arka plan rengini değiştiricem bunu nasıl dinamik veri varken yapabilirim?
    bunun için her soruya bir dataset eklemeniz gerekir sonra bunları alıp filtreden geçirerek o elementlerin arkaplanlarını değişebilirsiniz.

    mesela,

    element görünümü => <div class="soru" data-kod="2">soru body...</div> olsun,
    gelen jsondaki verilerde tüm div.soru ları alıp onları filtreleyerek dataset değeri 2 olanın arkaplan değerini şu yap demelisiniz.

    document.querySelectorAll('div.soru').forEach(function(v){
    if(v.dataset.kod == "2"){
    v.style.background = "green";
    }
    })
    gibi gibi olabilir.
  • 20-05-2022, 16:21:33
    #5
    @dnaz;

    altta ki kullanım için örnek bir şema iletebilir misin?

     <?php
         $i = 0;
         foreach ($sorular as $key => $v) {
            $i++;
            ?>
    
            <h3><?= $i ?>. SORU BAŞLIK?</h3>
            <ul>
                <li class="cevaplar">
                    <a class="cevap" id="1" soru="<?=$i?>" soruid="<?= $v['id'] ?>" href="#/">A) <?= $v['c1'] ?></a><br>
                </li>
                <li class="cevaplar">
                    <a class="cevap" id="2" soru="<?=$i?>" soruid="<?= $v['id'] ?>" href="#/">B) <?= $v['c2'] ?></a><br>
                </li>
                <li class="cevaplar">
                    <a class="cevap" id="3" soru="<?=$i?>" soruid="<?= $v['id'] ?>" href="#/">C) <?= $v['c3'] ?></a><br>
                </li>
                <li class="cevaplar">
                    <a class="cevap" id="4" soru="<?=$i?>" soruid="<?= $v['id'] ?>" href="#/">D) <?= $v['c4'] ?></a><br>
                </li>
                <li class="cevaplar">
                    <a class="cevap" id="5" soru="<?=$i?>" soruid="<?= $v['id'] ?>" href="#/">E) <?= $v['c5'] ?></a><br>
                </li>
            </ul>
    
            <br>
            <br>
    
        <?php }
    
        ?>
  • 20-05-2022, 16:42:51
    #6
    Eğer arka plan rengin post işleminin sonucuna bağlıysa ve gelen rengin "renk" içinde olduğunu varsayarsak, bunu if'in içine ekleyerek kullanabilirsin:
    $('body').css('background-color', jsondata["renk"]);
    ya da sadece bir elementin rengini değiştirmek için
     $('#test').css('background-color', jsondata["renk"]);
    Senin örneğinde seçilen şıkla doğru şıkkı ajax.php dosyasında kontrol edip ona göre renk döndürebilirsin. Ve sonuca bağlı olarak kullanıcının seçmiş olduğu şıkka idsine göre arka plan eklersin.
  • 20-05-2022, 16:46:26
    #7
    @BerkanY; peki soru="1" olanlara yani soru attr si == 1 olanlara uygulatmak istersem aynı senin verdiğin örnekte ki gibi $('body') alanını nasıl revize etmem gerekli?
  • 20-05-2022, 17:09:32
    #8
    Ajax.php'de doğru şık kontrolünü yapıp ona göre değer döndermen gerek.
    Doğru cevaptan bağımsız olarak soru="1" olan tüm şıklara renk uygulamayı kastediyorsan(yani 1. sorunun tüm şıklarına)
    $('[soruid="1"]').css('background-color', jsondata["renk"]);
  • 20-05-2022, 17:25:50
    #9
    @BerkanY; cevabın için çok teşekkürler son bir sorum olacak hem $('[soruid="1"]') olanlar ve $('[id="1"]') olanları nasıl yapabilirim?