为什么FormData出错

时间:2015-01-06 13:51:20

标签: javascript jquery ios forms

我正在尝试使用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应用

1 个答案:

答案 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){