1
我一直試圖從ajax到php文件一段時間沒有成功。所以我正在使用JQuery ValidateJQuery驗證文件上傳
我有一個形式有幾個輸入(姓名,電子郵件等)和一個輸入是文件類型。我執行我所有的驗證,即使在文件上,這一切都運行順利。然後我來到submitHandler函數。從我讀過的文章中可以發現,通過ajax發送文件的問題,現在已經成爲可能。所以我想
submitHandler: function (form) {
var $form = form,
formData = new FormData(),
params = $form.serializeArray(),
files = $form.find('[name="fileOne"]')[0].files;
$.each(files, function(i, file) {
formData.append('uploadedFiles-' + i, file);
});
$.each(params, function(i, val) {
formData.append(val.name, val.value);
});
$.ajax({
type: "POST",
url: "php/process.php",
dataType: "json",
data: formData
}).done(function (response) {
if (!response.success) {
alert("Failed");
console.log(response.errors);
}
else {
alert("Worked");
}
});
return false;
}
所以我希望能得到我的文件(fileOne)並將其附加到我的表單數據。然而,在PHP中我只是做這行現在
try {
if(isset($_FILES['fileOne'])){
var_dump("IN");
}
else {
var_dump("NO FILE");
}
} catch (RuntimeException $e) {
echo $e->getMessage();
}
的時候,它甚至不打這個PHP,因爲形式與URL獲取的所有數據提交潤通(這通常發生在當jQuery有一個錯誤)。當我得到它的工作,我得到輸出沒有文件。
那麼我怎樣才能發送我的上傳文件與我的表單數據的其餘部分,所以我可以在PHP中處理它?
感謝
你不這樣做你'formData'什麼。在這裏使用try/catch完全沒有意義 - 你沒有任何東西會拋出任何異常。 – CBroe
我的錯誤,顯示了舊版本的數據。已經更新,以表明我通過formData –
如果你想發送你所有的表單域,那麼你所要做的就是將你的表單元素傳遞給FormData。 – CBroe