我正在尝试使用ajax和FormData上传图片
我的HTML看起来像:
<form id="profile-photo-form">
<input type="file" id="profile-photo-choose" name="photo_path" accept="image/*">
</form>
调用和js函数更改文件选择器:
var form_data = new FormData($('#profile-photo-form')[0]);
$.ajax({
type: 'POST',
url: api_url,
data:form_data,
headers:{
'X-CVL-Auth': cookie
},
success: function(result){
但是我收到了一个javascript错误:
TypeError: Can only call DOMFormData.append on instances of DOMFormData
这适用于在ios(phonegap)上加载的html应用
答案 0 :(得分:5)
其他评论指出您可以使用.serialize()
,但是,这不会对包含图片的任何字段起作用。
使用相同的方法,简单地添加另一个设置processData: false
以阻止JS尝试查看您的数据,而只是将它作为哈希值返回的所有内容提交。
我还没有对每个案例进行过测试,但是这应该以与没有AJAX时提交的格式完全相同的格式提交数据。
var form_data = new FormData($('#profile-photo-form')[0]);
$.ajax({
type: 'POST',
url: api_url,
data:form_data,
processData: false, // add this here
headers:{
'X-CVL-Auth': cookie
},
success: function(result){