v2.5.2
Giriş yap

Ajax ile dosya yükleme işlemi

bilinmez1i
777 defa görüntülendi

Öncelikle merhaba. Kolay gelsin.

Dün başladığım bir proje de tıkanıp kaldım. JQueryde ajax ı kullanarak dosya yüklemeye çalışıyorum fakat bütün formun datası giderken yalnızca <input type="file"> ın datası gitmiyor. koldarı aşağıda vereceğim. Yardımcı olursanız Sevinirim :) Şimdiden teşekkür ederim

<form class="form ajaxForm"
      action="app/api.php"
      enctype="multipart/form-data">
    
    <input type="file"
           name="seo_logo">
           
    <input type="hidden"
           name="seo_logo_yedek"
           value="">
           
    <button type="button">
        Kaydet
    </button>
</form>
$(".ajaxForm .saveBtn").on("click", async () =>{
        let ajaxForm = $(".ajaxForm");
        let data = ajaxForm.serialize();
        /*
        Eğer Burda async kullanmazsam Ck editor texarea ya veri işlemiyor.
        */
        await CKEDITOR.instances['seo_copyright'].updateElement();
        await $.ajax({
            url: "app/api.php",
            data: data,
            method: "POST",
            contentType: false,
            processData: false,
            success: function(result){
                console.log(result);
                if (result === "1"){
                    console.log("İşlem Başarılı").i
                } else {
                    console.log("İşlem Başarısız");
                }
            }
        });
        return false;
    });
if ($_FILES['seo_logo']['size'] > 0) {
    $uploads_dir = "../upload/seo_logo";
    @$tmp_name = $_FILES['seo_logo']['tmp_name'];
    @$name = $_FILES['seo_logo']['name'];
    $random = md5(rand(165498, 9458489));
    $seo_logo = substr($uploads_dir, 3) . "/" . $random . $name;
    @move_uploaded_file($tmp_name, "$uploads_dir/$random$name");
} else {
    $seo_logo = $_POST['seo_logo_yedek'];
}

$seo_settings_save = $db->prepare("UPDATE seo SET
    seo_logo=:seo_logo
    WHERE seo_id=:seo_id");
    $control = $seo_settings_save->execute(array(
        "seo_logo" => $seo_logo,
        "seo_id" => "0"
    ));
    if ($control){
        echo "1";
    } else {
        echo "0";
    }
Cevap yaz
Cevaplar (1)
gokcin
1013 gün önce

Bu şekilde post edebilirsin.

jQuery(document).on("submit",'form[name="ajaxPost"]',function() {
    var $data   = new FormData(this);
    $.ajax({
        url: url,
        data: $data,
        dataType:'json' ,
        contentType: false,
        processData: false,
        type: "POST",
        success: function(data) { 
            $('#status').html(data.message);
        }
    });
});