Jquery使用一个ajax调用发布文件和数据

时间:2015-06-12 07:52:51

标签: javascript php jquery ajax image-uploading

嗨我有一个wordpress php类接收我的ajax并且运行良好。 现在我必须在用于将参数传递给PHP类的相同POST请求中上传文件(我在类中有一个开关,根据POST数据中的参数将我发送到正确的函数)。

这是代码:

List<RootCreator> mainSublist = new ArrayList<RootCreator>();
int number = mainList.size()/3;
for(int i= 0 ; i < mainList.size()/3; i++){
    int index = i*3 ;           
    List<RootCreator> sublist =  mainList.subList(0, index);
    mainSublist.addAll(sublist);
}

这段代码当然会返回一个&#34; Uncaught TypeError:非法调用&#34;

因为它不接受formData作为数据中的参数。

我该如何处理?

1 个答案:

答案 0 :(得分:5)

它返回Illegal invocation,因为jQuery正在尝试使用$.param解析表单数据。

使用jQuery提交文件时,必须关闭ajax处理

$('#imageUploadForm').on('submit', (function (e) {
    e.preventDefault();
    var formData = new FormData(this);
    var userID = <? php echo get_current_user_id(); ?> ;
    var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';

    formData.append('action', 'romme_call');
    formData.append('whatever', '1234');
    formData.append('userID', userID);
    formData.append('function_call', 'upload_profile_photo');

    $.ajax({
        url  : ajaxurl,
        type : 'POST',
        data : formData,
        contentType: false,
        processData: false
    }).done(function(response) {
        console.log("done");
        console.log(data);
    });
});