2017-10-01 66 views
-1

我在AJAX提交表單序列化和我的圖像數據數組中發佈請求中的問題。我怎樣才能做到這一點?AJAX後發送數據序列化和圖像數據

這裏是我的代碼:

我想給這樣的數據:

var Imagedata = new FormData(); 
jQuery.each(jQuery('#addfiles')[0].files, function(i, file) { 
    data.append('file-'+i, file); 
}); 

$("#editProd").serialize() 

這裏是我做過什麼:data: $("#editProd").serialize()+Imagedata,

我有這樣的作爲全碼:

function ProductAjax(e) { 
    e.preventDefault(); 

    var Imagedata = new FormData(); 
    jQuery.each(jQuery('#addfiles')[0].files, function(i, file) { 
    data.append('file-'+i, file); 
    }); 

    $.ajax({   
    url: "{{ route('admin.editProduct') }}",   
    type: "POST", 
    data: $("#editProd").serialize()+Imagedata, 
    dataType: "JSON", 
    success: function(data) { 
     if($.isEmptyObject(data.error)){ 
     $('.print-error-msg-addcat').removeClass('alert alert-danger'); 
     $('.print-error-msg-addcat').addClass('alert alert-success'); 
     $('.print-error-msg-addcat').find("ul").html(''); 
     $('.print-error-msg-addcat').css('display','block'); 
     $(".print-error-msg-addcat ul").append('<li class="tick">'+data.success+'</li>'); 
     $('#frmAddcategory')[0].reset(); 
     location.reload(); 
     }else{ 
     printErrorMsgEditprod(data.error); 
     } 
    } 
    }); 
} 

我做對了嗎?有什麼建議麼?

+0

不應該'data'在'jQuery.each'是'Imagedata'? – Mouser

+0

除此之外,你應該將表單數據追加到FormData對象中。 – Mouser

回答

0

看代碼和註釋如下:

function ProductAjax(e) { 
    e.preventDefault(); 

    var formData = new FormData($("#editProd")[0]); //assuming this object is a form element. 
    //the FormData object allows a form element to be passed to the constructor. The new instance 
    //will have all the form input fields already appended. 
    //if not a form element you need to append every input seperately using jQuery.serializeArray 

    jQuery.each(jQuery('#addfiles')[0].files, function(i, file) { 
    formData.append('file-'+i, file); 
    }); 


    $.ajax({   
    url: "{{ route('admin.editProduct') }}",   
    type: "POST", 
    data: formData, //send the formData object containing all the form input. 
    dataType: "JSON", 
    success: function(data) { 
     if($.isEmptyObject(data.error)){ 
     $('.print-error-msg-addcat').removeClass('alert alert-danger'); 
     $('.print-error-msg-addcat').addClass('alert alert-success'); 
     $('.print-error-msg-addcat').find("ul").html(''); 
     $('.print-error-msg-addcat').css('display','block'); 
     $(".print-error-msg-addcat ul").append('<li class="tick">'+data.success+'</li>'); 
     $('#frmAddcategory')[0].reset(); 
     location.reload(); 
     }else{ 
     printErrorMsgEditprod(data.error); 
     } 
    } 
    }); 
} 
+0

TypeError:對未實現接口FormData的對象調用'append'。 –

+0

請記住,它需要是一種形式,FormData僅在現代瀏覽器中受支持。 Upvote如果這個答案幫助將是很好的。 – Mouser