使用formdata提交ajax请求

var form = $("#form_id")[0];

var oFile = $("#media").get(0).files[0];

var formData = new FormData(form);

//FormData可以一次性获取form表单的全部内容

formData.append("name","名字"); //追加非form表单的内容

formData.append("media", oFile); //上传文件

console.log(formData.get("name")); //输出需要一个一个的单独获取,而无法使用console.log(formData); 一次性全部输出

$.ajax({

url: "urlAddress",

data:formData,

type: "post",

dataType: "json", //jsonp会把请求类型强制转换为get请求

contentType: false,

//contentType: application/x-www-form-urlencoded(默认)  multipart/form-data(用于文件上传) application/json(PHP后台无法使用$_POST接收到数据)

processData: false,

async: true, //异步请求

cache: false, //是否缓存

beforeSend: function() {

    // 可添加请求加载等待效果

},

success: function(data) {

    // 请求成功

},

error: function(jqXHR, textStatus, errorThrown){

    // 请求失败

}

});

textStatus报错 :parsererror——可能是因为contentType设置不正确,和后端不一样,造成的。

ajax 老走error,但是控制台显示请求成功,可能是因为跨域请求,或者是contentType不对,或者是dataType的设置问题,需要逐个排除问题产生的原因。

你可能感兴趣的:(使用formdata提交ajax请求)