我想上傳使用jQuery文件提交表單。這裏的形式:通過jQuery FORMDATA
<form id="upload_data" class="project" enctype="multipart/form-data" method="POST">
<select id="project_id" name="project_id">
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="file" id="data" name="data" />
<input type="hidden" name="user_id" id="user_id" value="12" required>
<button type="submit" id="ajax" class="btn btn-primary">Submit</button>
</form>
這裏的jQuery的一部分:
$('#upload_data').submit(function(e) {
var form = $('form');
var formData = new FormData();
$.each($(':input', form), function(i, fileds){
formData.append($(fileds).attr('name'), $(fileds).val());
});
$.each($('input[type=file]',form)[0].files, function (i, file) {
formData.append(file.name, file);
});
$.ajax({
url: '../controllers/process.php',
type: 'POST',
enctype: 'multipart/form-data',
data: formData,
processData: false,
contentType: false,
success: function(data)
{
alert(data);
},
error: function(data)
{
alert(data);
}
});
});
的問題是,我在process.php漸漸空虛後的值:
if (isset($_POST['project_id']) AND isset($_POST['user_id'])){
//process
}else{
echo 'No post data';
}
,它總是返回「不發佈數據「(但在控制檯中,我可以看到數據已發佈,但在服務器中並非如此)。我在這裏錯過了什麼?
你的代碼看起來很好,雖然沒有'enctype'屬性,因此您可以刪除,你可以通過只是在做'無功FORMDATA =新FORMDATA縮短'FormData'對象人口(形式[0]);'和刪除'$ .each()'調用。要檢查您的AJAX邏輯,設置''
也許你正在尋找錯誤的可變數據,因爲你要發送一個文件,你不會找到$ _post ..檢查$ _FILES – Gunnrryy
https://developer.mozilla.org/de/docs/Web/API/FormData/append 嘗試:formData.append('file',file,file.name) ; – DanielO