Jquery Ajax Data Gönderim Sorunu
Herkese iyi çalışmalar arkadaşlar şöyle bir sorunum var
Aşağıdaki kod ile resim post ediyorum ve resim yüklemesi yapıyorum fakat bunu yapabilmek için ayrı bir php dosyası oluşturmam gerekiyor normalde
data: {set_image:set_image} şeklinde post gönderebiliyordum fakat aşağıdaki resim gönderme metodu yüzünden post gönderemiyorum sadece $_FILES gidiyor umarım anlatabilmişimdir. Nasıl FILES gönderirken bide POST gönderebilirim
url: "inc/inc.php",
dataType: 'script',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
Normaldeki gönderim şeklim:
var set_logo="set_logo";
url: "inc/inc.php",
data: {form_data:form_data,set_logo:set_logo,token:token},
type: 'post',
Bunları ajax ile gönderiyorum dostlar yani istediğim aşağıdaki metodun çalışması aynı anda hem reism yollayıp hem post göndermek
set_logo isminde boş bir post yolluyup onu php dosyamda yakalıyorum ama en üstteki kod ile gönderince yakalayacak bir şey olmuyor
Tetikleme butonunu form un içine koymanızı tavsiye ederim. Button üzerinden değil de inputlara daha kolay ulaşabilmek için form üzerinden gitmeyi tercih ediyorum.
<form id="form" enctype="multipart/form-data">
<div class="card">
<div class="card-body">
<div class="row mt-2" style="justify-content: center;">
<div class="col-12 col-md-1">
<label class="form-label mt-1">Site Logo</label>
</div>
<div class="col-12 col-md-1">
<img src="../<?= $settingrow['setting_logo'] ?>" class="img-fluid mt-1 setting_uploaded_logo">
</div>
<div class="col-6 col-md-1">
<input type="text" class="form-control" name="setting_logo_width" value="<?= $settingrow['setting_logo_width'] ?>">
</div>
<div class="col-6 col-md-3">
<input type="file" class="form-control" name="setting_logo">
</div>
<div class="col-12 col-md-1">
<button class="btn btn-success">Gönder</button>
</div>
</div>
</div>
</div>
</form>
$("#form").on("submit", function (event) {
event.preventDefault()
let fd = new FormData()
$(this).find("input").each(function () {
let type = $(this).attr("type"),
name = $(this).attr("name")
if (type === 'file') {
if (this.files[0] !== undefined)
fd.append(name, this.files[0])
}
else
fd.append(name, $(this).val())
})
$.ajax('inc/inc.php', {
method: 'POST',
data: fd,
contentType: false,
processData: false
})
})
php tarafında $_FILES[] ve $_POST[] şeklinde inputların name değerleri ile yakalayacaksınız.