v2.5.2
Giriş yap

Json ile alınan veriyi yönlenecek url e yazdırma?

mertaslan
478 defa görüntülendi

Merhaba arkadaşlar yeni yeni öğrenmeye çalışıyorum bu sorunumu da günlerdir aramama rağmen bir türlü çözüme kavuşturamadım. Sizlere sormaya karar verdim. Muhtemelen çok basit bir çözümü vardır ama bir türlü yapamadım.

Json ile aldığım değeri yönlenecek url e yazdırmak istiyorum. Kod içerisinde de belirttim. Şimdiden çok teşekkür ediyorum.

<script type="text/javascript">  

	$(function() {

		$("a.soru_okundu").click(function() {

			var nesne = $(this);

			var id = nesne.attr("id");

			var sorusef = nesne.attr("sorusef");

			var cevapid = nesne.attr("cevapid");

			$.ajax({

				url: "<?php echo $arow->site_url; ?>/sistem/bildirim-okundu.php",
				data: {id:id,sorusef:sorusef,cevapid:cevapid},
				type: "post",
				dataType: "json",
				success: function(data) {
					location.href = "<?php echo $arow->site_url; ?>/soru/BURAYA SORU SEF İLE ALDIĞIM DEĞERİ YAZDIRMAK İSTİYORUM"
				},
				error: function(data) {
					location.href = "<?php echo $arow->site_url; ?>/soru/BURAYA SORU SEF İLE ALDIĞIM DEĞERİ YAZDIRMAK İSTİYORUM"
				}


			});

		});

	})

</script>
abdullahx
1088 gün önce

Öncelikle size de bazı mesajlarımda belirttiğim bazı durumları açıklayayım. Daha temiz ve doğru bir kod yazabilme açısından ufak detaylar.

(Muhtemelen JQuery nin güncel sürümlerinden birini kullandığınızı varsayıyorum)
$(selector).click(function() {}) yerine $(selector).on("click", function() {}) kullanın

Gördüğüm kadarıyla a elemanına sorusef ve cevapid adında özellikler (attribute) eklemişsiniz. Bu HTML5 kurallarına biraz aykırı bir durum, eğer veri taşımak için kendiniz bir şey eklemek istiyorsanız bunu data- ön eki ile kullanmanız gerekir. Diğer türlü de çalışır ama yanlış bir kullanım olur. data-sorusef ve data-cevapid şeklinde düzenlemenizi öneririm. Jquery tarafında bu değerleri alırken de attr data metodunu kullanabilirsiniz.

Sorunuza gelecek olursak success ve error fonksiyon olması fark etmeksizin her türlü aynı linke yönlendirme yapmak istiyorsunuz. Bunun için kodu kısaltmak için then sonrasına tek bir kod yazılması yeterli olur. Yukarıda söylediğim değişikliği yapmanız sonucu kodun son hâli şöyle gözükecektir.

$(function() {
        $("a.soru_okundu").on("click", function() {

            let nesne = $(this),
             id = nesne.attr("id"),
             sorusef = nesne.data("sorusef"),
             cevapid = nesne.data("cevapid");

            $.ajax({
                url: "<?= $arow->site_url ?>/sistem/bildirim-okundu.php",
                data: {
                    id: id,
                    sorusef: sorusef,
                    cevapid: cevapid
                },
                type: "post",
                dataType: "json"
            }).then(() => {
                location.href = `<?php echo $arow->site_url; ?>/soru/${sorusef}`
            })
        })
    })