我已經搜索了一些其他問題,但沒有找到使用與我收集表單數據相同的方法。爲AJAX收集文件上傳數據使用jQuery提交
我通過jQuery收集表單中的值,並將它們添加到javascript對象中,然後通過AJAX使用jQuery發佈這些信息。一切工作正常:
$("#contact-form-id").submit(function (e) {
e.preventDefault();
// validation stuff here
// ...
postForm(); // running the postForm() function if validation successful
});
function postForm(){
var userName = $('input[name="user-name"]').val();
var userEmail = $('input[name="user-email"]').val();
var userPhone = $('input[name="user-phone"]').val();
var userMessage = $('textarea[name="user-other-info"]').val();
var valuesToPost = {
userName: userName,
userEmail: userEmail,
userPhone: userPhone,
userMessage: userMessage
};
$.ajax({
type: "POST",
url: "<?php echo get_stylesheet_directory_uri() ?>/actions/post-contact-form.php",
data: {data : valuesToPost},
cache: false,
success: function(){
// success!
}
});
};
正如你所看到的,我使用preventDefault
防止表單提交和我然後將所有數據收集到我的對象valuesToPost
前驗證它,但有一個最後一場我我目前正在忽略,這是一個文件上傳領域。
我的理解是,當文件上傳時,它們被保存在臨時目錄中,直到腳本執行完畢。我相信我可以收集臨時文件'在另一邊'(PHP腳本)的位置路徑。但我不知道如何從上傳收集文件值/輸入我也不知道怎麼跟我的對象一起發送該valuesToPost
我想這就是我想象:
var fileUpload = /* what goes here? how do I store the file upload in a variable in jQuery? */
var valuesToPost = {
userName: userName,
userEmail: userEmail,
userPhone: userPhone,
userMessage: userMessage,
fileUpload: fileUpload
};
我完全錯了嗎?我希望能夠從文件上傳中獲得臨時URL的路徑,將它添加到我的對象中,然後將該文件下載到我的PHP腳本中(以附加到電子郵件中)。
我真的很討厭看到'$(this)[0]' – Musa