v2.5.2
Giriş yap

jquery ile veri güncelleme js kodunda düzenleme

g4rymckinn0n
663 defa görüntülendi

jquery ile fiyat güncellerken json servisten gelen verileri değişkene alıyorum.

bu değişkenler ile bir hesap yaptığım yeni bir değişken var. bu değişkeni jquery içerisinde güncelleyemedim.

$hassatis = $currency['data']['ALTIN']['satis'];
$haskapanis = $currency['data']['ALTIN']['kapanis'];
$hasdegisim = '%' . number_format((($hassatis - $haskapanis) * 100) / $hassatis, 2, '.', ',');

$hasdegisim değişkenini jquery içerisine dahil edemedim. söz dizimine aşina değilim sanırım ondan yapamadım.

$.getJSON('<?= $source ?>', data => {
            $("#tablo1USDTRYalis").html(data.data.ALTIN.alis)
            $("#tablo1USDTRYsatis").html(data.data.ALTIN.satis)
            $("#tablo1USDTRYdegisim").html('<?= $hasdegisim ?>') // phpdeki değişkeni burada gösteriyorum fakat değişkenin aldığı veri güncellenmiyor. 

$hasdegisim değişkeninin aldığı veri sürekli olarak güncellenmeli. ama sitede bu alan güncellenmiyor diğer alış ve satış fiyatı güncelleniyor.

hasdegisim değişkenimi jquery içerisinde nasıl kullanabilirim güncellenecek şekilde?

ebykdrms
988 gün önce

Evet, güncellenmeyecektir. Siz aslında #tablo1USDTRYdegisim elementine hep aynı değeri basıyorsunuz.
$source adlı değişkende tuttuğunuz adrese bir istek atılıyor ve bu isteğe yanıt geldikten sonra front-end tarafında alış ve satış alanlarını dolduruyorsunuz. Bu alış-satış değerlerinin hesaplanmasını yine front-end tarafında javascript ile yapmalısınız.

$.getJSON('<?=$source?>', function(data) {
    var alis = Number(data.data.ALTIN.alis);
    var satis = Number(data.data.ALTIN.satis);
    var kapanis = Number(data.data.ALTIN.kapanis);
    var degisim = "%" + (((satis - kapanis) * 100) / satis).toFixed(2);
    $("#tablo1USDTRYalis").html(alis);
    $("#tablo1USDTRYsatis").html(satis);
    $("#tablo1USDTRYdegisim").html(degisim);
});

Sizin kodunuzun neden çalışmadığının cevabı, sunucunun çalışma mantığında saklı.
Siz bu javascript kodunuzun bulunduğu php dosyasına erişmek istediğinizde, yani istek attığınızda,

  • Önce sunucu bu dosyayı yukarıdan aşağıya okumaya başlar.
  • PHP tag'ı gördüğü yerlerde php işlemlerini yapar ve buralara çıktılarını basar.
  • Sunucu sayfayı okumayı bitirdiğinde artık PHP tagları içine yazdığınız hiçbir şey ortada yoktur. PHP tagları ortadan kalkmıştır. Bu tagların yerine, PHP'nin hesapladığı değerler siz elinizle sonuçları hesaplayıp düz yazıyla yazmışsınız gibi yazılmıştır.
  • Sunucu size yanıtı gönderirken artık PHP ile bir bağınız kalmamıştır. İstek yapan tarayıcıya dümdüz bir metin gelir.
  • Tarayıcı bu dümdüz metni alıp anlamlandırmaya çalışır. İçinde kendince yorumlayabileceği neler var diye yukarıdan aşağıya tarar. Tabii ki burada tarayıcı hiçbir PHP tag'ıyla karşılaşmaz. PHP taglarının yerinde çoktan hesaplanmış değerleri görür.
  • Sıra sizin $.getJSON() fonksiyonunuza geldiğinde tarayıcının gördüğü şey '<?= $source ?>' değil, onun yerinde hangi ifade olması gerekiyorsa odur. Aynı şekilde $("#tablo1USDTRYdegisim").html('<?= $hasdegisim ?>') için de öyle. Aslında siz otomatik değişecek bi'şey yazdığınızı düşünürken tarayıcı o satıra geldiğinde gördüğü şöyle bi'şeydir: $("#tablo1USDTRYdegisim").html('0.231232'). Böylece tarayıcı #tablo1USDTRYdegisim elementine hep aynı ifadeyi yazmaya çalışır.
  • Tarayıcılar PHP gibi sunucu taraflı dillerin kodlarını göremezler. Sadece PHP işini bitirdikten sonraki halini görebilirler. PHP'yi görselerdi bile çalıştıramazdı çünkü PHP yorumlamayı bilmiyorlar. Bu yüzden, isteğe yanıt döndüğünde, yani siz sayfayı gördüğünüzde artık PHP ile bağınız kalmamıştır. Geri kalan işlemleri ancak javascript'le halledebilirsiniz.