iPhone ajaxからFormDataの使用を要求された問題について
1.問題分析
2.ソリューション:
/*
* ajax , FormData , 。
* : iphone input[type=file] ;
* input[type=file]
* ( :Android , , )。
*/
var regData = {url:'...', isCommit:false, data:''};
$('#commitBtn').click(function(){
if (regData.isCommit) {
return false;
}
regData.isCommit = true;
regData.data = new FormData($('#regForm')[0]);
$.ajax({
type: 'POST',
url: regData.url,
data: regData.data,
dataType: 'json',
contentType: false,
processData: false,
success: function (res) {
console.log(res);
regData.isCommit = false;
},
error: function () {
regData.isCommit = false;
}
});
});
2.ソリューション:
/**
* , 。 , 。
* file ,
*/
if ($('input[name=file]').prop('files').length == 0) {
//input[type=file]
regData.data = $('#regForm').serialize();
$.ajax({
type: 'POST',
url: regData.url,
data: regData.data,
dataType: 'json',
success: function (res) {
console.log(res);
regData.isCommit = false;
},
error: function () {
regData.isCommit = false;
}
});
} else {
//input[type=file] , new FormData
}