Jquery birden fazla butonun bir value döndürmesi
Merhabalar,
Projem için jquery ile bir sepet yapmam gerekli ve bu sepeti yaparken div içerisinde verileri getirebiliyorum.gelen verilerin hepsi farklı ıd değerine sahip ama
kod ile eişmeye çalıştığımda
html
<div>
<input type="hidden" name="producecode" class="pdcode" value="{{per.produceCode}}" />
<input type="hidden" name="useremail" class="uponequantity" value="{{user.username}}" />
<button class="btn btn-sm btn-primary" onclick="upoq()"><i class="fa fa-plus"></i></button>
</div>
jquery
$(".up").click(function(){
console.log($(".prdtd").find("input:first-child").attr("value"));
console.log($(".uponequantity").val());
$.ajax({
type: "POST",
url: "/uponequantity/",
headers: { "X-CSRFToken": '{{csrf_token}}' },
data: {
"producecode":$(".pcode").val(),
"useremail":$(".uponequantity").val(),
},
success: function() {
console.log('success');
}
});
})
kodunu yazdığım zaman tek bir ıd dönüyor her buton için
sorunu nasıl çözebilirim?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
değer almanın çok sayıda yolu var. bu şekilde çok sayıda değer gönderecek isen, yanlış bir yaklaşım.
$('div').serialize();
bu seçili alan içerisinde yer alan tüm form elemanları seçerek tek bir veri haline getirir. php tarafından $_POST["name"] şeklinde iletilenlere teker teker ulaşabilirsin.
kısaca, divine bir id veya clas ver ve serialize ederek ajaxa bildir.
örnek
var data = $('div').serialize();
$.ajax({
type: "POST",
url: "/uponequantity/",
headers: { "X-CSRFToken": '{{csrf_token}}' },
data: data
});
ben olsan butona attribute olarak id verirdim şöyle
<button class="btn btn-sm btn-primary addBtn" data-id={{user.id}}><i class="fa fa-plus"></i></button>
jquery olan kısımdada o id yi alırdım
$('body').on('click', '.addBtn', function(){
let id = $(this).data('id')
console.log(id)
})
Html kodunu düzenleyip
<div>
<input type="hidden" name="producecode" class="pdcode" value="{{per.produceCode}}" />
<input type="hidden" name="useremail" class="uponequantity" value="{{user.username}}" />
<button class="btn btn-sm btn-primary" onclick="upoq(per.produceCode, user.username)"><i class="fa fa-plus"></i></button>
</div>
</pre>
onClick handler'ini de bu şekilde alırsan çalışır.
function uponq(prodId, username){
//Blablabla
}