首页 > 解决方案 > 使用 jQuery val() 发送表单数据并使用 FormData 发送数据

问题描述

我尝试使用两种方法使用 Ajax POST 请求发送文件:

方法 1 (jQuery val()) -

$.ajax({
    url: 'somewhere',
    method: 'post',
    processData: true,
    contentType: true,

    data:{
      'data1': $('#fileinputid').val(),  // File input
}

success:function(){
    // Do something;
}

error:function(){
    // Do something;
},

});

方法 2- (FormData)

var formData = new FormData(document.getElementById("form-id"));

$.ajax({
    url: 'somewhere',
    method:'post',
    cache: false,
    processData:false,
    contentType: false,

    data: formData,

    success: function(){
        // Do something for success
    },

    error: function(){
        // Do something for error
    },

});

现在,方法 2 有效,但方法 1 无效。这是什么原因?

标签: javascriptjqueryajax

解决方案


$('#fileinputid').val()只为您获取文件。你不能用那个上传文件。

FormData能够创建文件上传所需的整个 multipart/formdata 请求结构。


推荐阅读