AJAX 提交 FormData 报data undefined

直接上代码js里的
$('#submit').click(function(){
var shop = {};
shop.shopName = $('#shop-name').val();
shop.shopAddr = $('#shop-addr').val();
shop.phone = $('#shop-phone').val();
shop.shopDesc = $('#shop-desc').val();
shop.shopCategory = {
shopCategoryId:$('#shop-category').find('option').not(function(){
return !this.selected;
}).data('id')
};
shop.area = {
areaId:$('#area').find('option').not(function(){
return !this.selected;
}).data('id')
};
var shopImg = $('#shop-img')[0].files[0];
var formData = new FormData();
formData.append('shopImg',shopImg);
formData.append('shopStr',JSON.stringify(shop));
var verifyCodeActual = $('#j_captcha').val();
if(!verifyCodeActual){
$.toast('请输入验证码!');
return;
}
formData.append('verifyCodeActual',verifyCodeActual);
alert(formData.get('shopStr'));
$.ajax({
url:registerShopUrl,
type:'POST',
data: formData,
contentType:false,
processData:false,
cache:false,
success:function(data){
if(data.success){
$.toast('提交成功');
}else{
$.toast('提交失败' + data.errMsg);
}
$('#captcha_img').click();
}
});
});
图片说明

后台没返回吗 if前面console.log(data) 看看

设置ajax的dataType参数试试

设置ajax的dataType参数为"json"试试

success里面先不要判断,先打印你的data看看到底是什么格式

data 的数据格式没有确定

既然有用打开调试工具,可以切到Network去看报文,看请求的返回信息。
另外,你这里只设置success事件,设置一下失败的事件,应该就能有信息输出了。

你这好像是Post请求,想保存某些信息。但是content-type设置成false.后台能接收到你传过去的数据么?
你调试,代码没有走进 success吧,没走进去当然是undefined,error也没写,就算ajax走错了,你也不知道

success里面先不要判断,先打印你的data看看到底是什么

数据类型要以 json类型传输 设置ajax的dataType参数为"json"

ajax datatype 类型 , html、json、jsonp、script或者text 你的类型改一下,对应的
看看后台action 返回结果类型是否跟dataType匹配

先调试一下,看看是不是数据类型不正确

把 contentType 设置为 : application/json; charset=utf-8