v2.5.2
Giriş yap

Js sonraki sayfaya post gönderme

aydinkeskin
714 defa görüntülendi

bu şekilde verilerimi alıyorum
ve bu verilerin sonraki sayfaya yönlendirme ile gitmesini istiyorum.
fakat post ya boş gidiyor yada arkaplanda gidiyor haliyle
bu durumu nasıl aşabilirim.


var SatinAlHeader = {
	'SatinAl': function(uid,fiyat,adet,ip,urunid,urunadi,adsoyad,telefon,gsm,email,adres) {
		$('#SatinAl-header').click(function() {
            $(this).addClass('loading')
	    });
		var Udata = {
			'uid' : uid,
			'fiyat' : fiyat,
			'adet' : adet,
			'ip' : ip,
			'urunid' : urunid,
			'urunadi' : urunadi,
			'adsoyad' : adsoyad,
			'telefon' : telefon,
			'gsm' : gsm,
			'email' : email,
			'adres' : adres
		}
		$.ajax({
			url:'/SatinAl/',  
			type: 'post', 
			data: Udata,  
			success: function(data) { 
				// window.location.href = '/SatinAl/';
				window.location.assign(data);

			}
		});
	},
	'remove': function() {
	}
}

<a class="btn btn-success mb-1 mt-1" 
	onClick="SatinAlHeader.SatinAl(
			'<?php echo $userd ?>',
			'<?php echo Fiyatlandirma("parabirimi",$_SESSION["parabirimi"],$oku["fiyat"]); ?>',
			'1','<?php echo ipadres(); ?>',
			'<?php echo $oku["id"] ?>',
			'<?php echo $oku["adi"] ?>',
			'<?php echo $uye["adsoyad"] ?>',
			'<?php echo $uye["tel"] ?>',
			'<?php echo $uye["gsm"] ?>',
			'<?php echo $uye["email"] ?>',
			'<?php echo $uye["adres"] ?>')"
	href="nojavascript...;" id="SatinAl-header" >  
	<i class="fa fa-star"></i> Satın Al
</a>


şimdiden teşekkürler.

Cevap yaz
Cevaplar (1)
venloress
1167 gün önce

Burada mantık hatası var gibi gözüküyor.
JQuery'de $.ajax fonksiyonu arkaplanda çalışır.

$.ajax({
	url:'/SatinAl/', 
	type: 'post', 
	data: Udata,  
	success: function(data) { 
	    // Udata değişkeni 'SatinAl' linkine gönderilir ve geriye dönen sonucu data değişkenine atar
	}
});

Udata değişkeni 'SatinAl' linkine gönderilir ve geriye dönen sonucu data değişkenine atar. Süslü parantez içine en son yapılacak işlemleri girmelisiniz.

Çözüm:
Tüm bunlar yerine gizli bir form oluşturun. Form ile post edin. İnput içine json türünde verilerinizi koyun ve diğer taraftan php ile 'json_decode' ile alınız.

<form action="SatinAl" method="post">
    <input style="visibility:hidden" name="data" type="text" value="<?php echo '{
    '.$userd.'
    '.Fiyatlandirma("parabirimi",$_SESSION["parabirimi"],$oku["fiyat"]).'
    '.ipadres().'
    '.$oku['id'].'
    '.$oku['adi'].'
    '.$uye['adsoyad'].'
    '.$uye['tel'].'
    '.$uye['gsm'].'
    '.$uye['email'].'
    '.$uye['adres'].'
    }' ?>">
    <button class="btn btn-success mb-1 mt-1">Satın Al</button>
</form>

Verileri almak için;

<?php
$data = json_decode($_POST['data']);
//print veya echo ile kullanabilirsin
print_r($data); //verilerin tamamını ekrana yazdırır
echo $data[0]; //ilk veriyi ekrana yazdırır
?>

Umarım yardımcı olur. Kolay gelsin.