v2.5.2
Giriş yap

Javascript ile input value değerini Yenilemek Mümkün mü?

aydinkeskin
1,030 defa görüntülendi

php ile value değerine bir değer atıyorum
sonra işlem yaptırıyorum sayfa yenilenmiyor hiç. bir sorun yok

gelen değeri php kontrol ettirdikten sonra işlem olumlu ise sonlandırıyorum.

fakat sayfa yenilenmediği için değer aynı kalıyor ve
tekrar işlem gönderdiğimde değer silindiği için kontrolden düşüyor
false dönüyor.

bunun için ne yapabilirim?

Cevap yaz
Cevaplar (4)
ebykdrms
888 gün önce

Ajax isteği sonucunda size input'a yazacağınız yeni değerler geliyorsa success fonksiyonunuz içinde şu şekilde input'un value'sini güncelleyebilirsiniz:

success: function(response) {
    const newToken = response.token; // yeni token verisi böyle geliyor diyelim.
    $('[name="_token"]').val(newToken);
});

Eğer gelen veriyi tam olarak nasıl alacağınızdan emin değilseniz console.log() fonksiyonu ile gelen veriyi konsola yazdırıp çıktıyı buraya yazarsanız javascript ile bu veriyi tam olarak nasıl alıp <input name="_token" /> inputuna value olarak gönderebileceğinizi yazabiliriz.

success: function(response) {
    console.log(response);
});
aydinkeskin
888 gün önce

@ebykdrms

teşekkür ederim alakandan dolayı bu taraftan düşünmemiştim hiç dicem de düşünemezdim zaten :))
ben pek sevemiyorum js :)

aydinkeskin
888 gün önce

@ebykdrms javascript i hiç sevmiyorum işte
yapı dediğim bir sınıfım var o sınıf üzerinden input a değer gönderiyorum
ajax ın gideceği sayfada değerin üzerinden kontrol yapıyorum ve php tarafında işlem bittiğinde o değeri sessiondan siliyorum.
ajax kullanmadan önce haliyle sayfa yenilendiği için php tarafı değeri yeniliyor
fakat ajax tarafında anlık olarak işlem yaptığı için değer haliyle yenilenmiyor.

merak ettiğim konu aslında javascript ile php kodu ile input a düşen value değerini yenileyebilirmiyiz.

<input type="hidden" name="_token" value="<?php Func::Encode("Değer") ?>">
<input type="hidden" name="_token" value="cc9c7eb9e244d2a10bf6297a67e16cf637e4bb9f199425cd8eb3a09a1fdcc829">


acemi acemi javascript için uğraşıyorum işte..

$(document).ready(function () {
    $("#DuzenleButon").click(function (e) {
        e.preventDefault();  
        const Baslik = document.getElementById("Mesaj");
        const Icerik = document.getElementById("Icerik"); 
		let FormData = new FormData(document.getElementById("FormAyar")); 
        $.ajax({
            url: '/Ayarlar/Update/', 
            type: 'POST', 
            data: FormData,
            dataType: "json",
			processData: false,
			contentType: false,
            success: function (response) {.....

bu şekilde formdaki verileri alıyorum gönderiyorum.
işlemleri yapıyorum fakat yukardaki inputu tazelemen gerekiyor benim için önemli tarafı o kısmı
sanırım onunda bir yolu yok gibi gözüküyor.
Merak ettiğim react vb fw'ler ile bu işlemleri neye göre yapıyorlar sanırım
oluştudukları token değerleri js tarafında yarrattıkları için yenilenmeside problem olmuyor.

ebykdrms
890 gün önce

Merhaba. Sorunuza varsayımsal bir cevap vermek istedim ama algoritmanızı nasıl kurduğunuzla ilgil çok fazla ihtimal var.
Sorunuzu biraz daha detaylandırmalısınız. "Bu şekilde bu sayfadan bu sayfaya veri gönderiyorum, bu şekilde işlemden geçirip bu şekilde sonlandırıyorum ve şu olsun istiyorum" şeklinde, kodlarınızdan da örnekler paylaşabilirseniz yardımcı olalım.
back-end dünyasında yeniyseniz bizim tahmin edemeyeceğimiz şekilde yanlış algoritma kurmuş olabilirsiniz.

Eğer bir input'un value'sini javascript ile değiştirmek istiyorsanız:

$myInput = $("#my-input");

const myInput_currentValue = $myInput.val(); // Input'un mevcuttaki value'sini aldık.
const myInput_newValue = myInput_currentValue.replaceAll(",",""); // Aldığımız değerdeki "," karakterlerini sildik.
$myInput.val(myInput_newValue); // Yeni oluşturduğumuz değeri input'un value'sine yazdık.

Veya bir input'ta bir değişiklik olduğu zaman bu işlemi yapmak istiyoruz diyelim:

$myInput = $("#my-input");

$myInput.on("input",function(){ // Input'a herhangi bir giriş olduğunda "input" adlı event çalışır.
    const currentValue = $(this).val(); // Bu input'un value değerini aldık.
    const newValue = currentValue.replaceAll(",",""); // Aldığımız değerdeki "," karakterlerini sildik.
    $(this).val(newValue); // Bu input'un value'sine yeni değeri yazdık.
});

Ama mesela burada PHP kullanamazsınız. Sayfa kullanıcıya ulaştığı anda PHP ile bağlantısı sonlanır. Siz PHP'ye yeni bir istek atmadığınız sürece PHP sizin sayfanıza yapılan değişikliklerden haberdar olmaz.
Yani şöyle bir kullanımda verinin değiştiğini göremezsiniz:

<?php $myValue = "Merhaba, Dünya!"; ?>

<input type="text" value="<?=$myValue?>" />
<script>
    $myInput = $("#my-input");

    $myInput.on("input",function(){ // Input'a herhangi bir giriş olduğunda "input" adlı event çalışır.
        <?php $newValue = str_replace(",","",$myValue); ?>
        $(this).val("<?=$newValue?>");
});
</script>

Çünkü tarayıcı sizin PHP kodlarınızı göremez. PHP kodlarınız sunucu tarafında işlenip sayfanız dümdüz bir string'e dönüştürülerek istemciye gönderilir. İstemci (tarayıcı) sizin <?php ?> gibi ifadelerinizi veya php değişkenlerinizi görmez. PHP kendine ait olan işlemlerin hepsini sunucu tarafında halledip gönderir.
Yani siz yukarıdaki kodu yazdığınızda aslında tarayıcıya şu kod iletilmiş olur:

<input type="text" value="Merhaba, Dünya!" />
<script>
    $myInput = $("#my-input");

    $myInput.on("input",function(){ // Input'a herhangi bir giriş olduğunda "input" adlı event çalışır.
        $(this).val("Merhaba Dünya!");
});
</script>

Gördüğünüz gibi sunucu tarafında PHP yapacağı her şeyi yaptı ve kendini yazdığınız koddan tamamen arındırdıktan sonra sayfayı tarayıcıya gönderdi.
Böylece input'unuzda her "input" event'i gerçekleştiğinde aslında input'un değerini direkt "Merhaba Dünya!" olarak değiştir demiş olduk.