使用jQuery为AJAX提交收集文件上载数据

使用jQuery为AJAX提交收集文件上载数据,jquery,ajax,forms,file-upload,Jquery,Ajax,Forms,File Upload,我搜索了一些其他的问题,但没有一个我能找到使用相同的方法收集表单数据,我做 我通过jQuery收集表单中的值,并将它们添加到javascript对象中,然后使用jQuery通过AJAX发布这些信息。所有工作都很好: $("#contact-form-id").submit(function (e) { e.preventDefault(); // validation stuff here // ... postForm(); // running the postFo

我搜索了一些其他的问题,但没有一个我能找到使用相同的方法收集表单数据,我做

我通过jQuery收集表单中的值,并将它们添加到javascript对象中,然后使用jQuery通过AJAX发布这些信息。所有工作都很好:

$("#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!
         }
     });
};

我完全错了吗?我希望能够从文件上传中获取临时URL的路径,将其添加到我的对象中,然后在我的PHP脚本中下载该文件(附在电子邮件中)。

您可以使用它存储提交的数据,包括上传的文件

var formData = new FormData($(this)[0]);
$(此)指向提交的表单

然后在ajax请求集中:

data: formData

希望它对你有用

我还不能发表评论,以了解更多信息,但这听起来像是您正在尝试做的:

后两个答案值得一提

基本上,尽管您正在寻找的var是

var fileUpload = $('input[name="user-file"]')[0].files[0]);
希望有帮助

我真的很讨厌看到
$(这个)[0]
var fileUpload = $('input[name="user-file"]')[0].files[0]);