2017-04-03 142 views
-1

我想做一個包含圖片的AJAX請求。只有圖像是一種形式,並且只需要成爲圖像。Ajax請求圖像

var form = $('form')[0]; // You need to use standard javascript object here 
var formData = new FormData(form); 

var data = { 
    id: id, 
    title:title, 
    photo:formdata 
}; 

$.ajax({ 
    type: 'POST', 
    enctype: 'multipart/form-data', 
    url: '/my-url', 
    data: JSON.stringify(data), 
    processData: false, 
    cache: false, 
    contentType: false, 
    success: function(response){ 
    console.log(response); 
    }, 
    error: function(data){ 
    console.log("error"); 
    console.log(data); 
    } 
}) 

我越來越id和冠軍.val();,我想保持這種..,它的正常工作中的id和標題,但我不知道如何使工作發送圖像數據庫。

+0

所以你想讓別人爲你編寫服務器端部分? –

+0

@RoryMcCrossan noo ..我只是想知道爲什麼它沒有通過的圖像..我正在看'請求有效載荷'並且照片是空的。 – Hateres1990

+0

向我們展示PHP代碼。我敢打賭,你的問題將會是'formdata'部分。這是整個「形式」。 – vaso123

回答

0

你的問題是因爲你試圖追加二進制FormData到一個對象,然後序列化。

相反,您需要將附加數據添加到FormData對象,以便它們都可以用相同的方式進行編碼。試試這個:

var form = $('form')[0]; 
var formData = new FormData(form); 

formData.append('title', title); 
formData.append('id', id); 

$.ajax({ 
    type: 'POST', 
    enctype: 'multipart/form-data', 
    url: '/my-url', 
    data: formData, 
    processData: false, 
    cache: false, 
    contentType: false, 
    success: function(response) { 
    console.log(response); 
    }, 
    error: function(data){ 
    console.log("error"); 
    console.log(data); 
    } 
}) 

注意,如果idtitle值從input元素form內恢復,那麼你甚至都不需要append()線,因爲他們將被自動包含在FormData爲您提供form給構造函數。

此外請確保您在form元素的submit事件下運行此代碼並呼叫preventDefault。不要把它放在點擊submit按鈕之下。