2012-07-24 61 views
0

解決方案:我必須放下sumbmit按鈕並使用常規按鈕。該代碼的其餘部分起作用。我也放棄了HTML表單。使用formdata將數據發送到PHP使用ajax

我想發送一個圖像+一些文本到我的PHP腳本與Ajax使用formdata。 這就是我得到:

$ajax_uploadImage = function (form) 
{ 
    var data = new FormData(); 

    data.append('title', form.find('#title').val()); 
    data.append('comment', form.find('#comment').val()); 
    data.append('image', form.find('#image').prop('files')[0]); 

    $.ajax({ 
     url: '../php/upload_image.php', 
     data: data, 
     type: 'POST', 
     processData: false, 
     contentType: false, 
     success: function (data) { 
      alert('something'); 
     } 
    }); 
} 

在函數參數的形式是一個普通的HTML表單,這裏是HTML表單:

<form enctype="multipart/form-data" id="upload_image"> 
    <label for="title">Title:</label> 
     <input type="text" id="title" name="title" /> 
    <br /> 

    <label for="comment">Comment:</label> 
    <input type="text" id="comment" name="comment" /> 
    <br /> 

    <label for="image">Image:</label> 
    <input type="file" id="image" name="image" /> 
    <br /> 

    <input type="submit" value="Upload picture" name="submit"> 
    <hr /> 
</form> 

在成功的警報從未觸發,誰能幫助?

編輯:添加PHP,即使它並不做任何事情:

<?php echo 'something'; ?> 

回答

0

現在你存儲一個jQuery對象在FormData不能正常工作。改爲使用這些元素的值。在文件輸入的情況下,你需要使用File對象中的DOM元素的files屬性:

data.append('title', form.find('#title').val()); 
data.append('comment', form.find('#comment').val()); 
data.append('image', form.find('#image').prop('files')[0]); 
+0

我加你的變化,但我仍然沒有得到結果。我現在嘗試成功使用警報,但不會觸發。我已經添加了我的PHP,但它沒有太多。 – ptf 2012-07-24 23:40:59

0

嘗試增加形式的行動,比如:

<form enctype="multipart/form-data" id="upload_image" action="upload_image.php"> 
+0

如果我使用「文件」,我得到一個異常說: 無法讀取未定義的屬性「0」。 – ptf 2012-07-24 23:40:24

+0

也可以發佈upload_image.php文件,示例應該如下所示:'try foreach($ _FILES [「images」「[」error「] as $ key => $ error){if error == UPLOAD_ERR_OK ){ $ name = $ _FILES [「images」] [「name」] [$ key]; move_uploaded_file($ _FILES [「images」「[」tmp_name「] [$ key],」uploads /「。$ _FILES ['images'] ['name'] [$ key]); } }' – 2012-07-24 23:55:41

+0

如果我使用動作屬性,站點會將我重定向到action.php,這是我不想要的。它不應該在那裏。 此外,PHP文件位於開放帖子的底部,即所有它的atm。如果我只是可以通過$ _FILES對象訪問它,我知道我已經工作的其餘邏輯。 – ptf 2012-07-24 23:58:40