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

Rom*_*meo 2 javascript php ajax jquery image-uploading

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

这是代码:

$(document).ready(function (e) {


$('#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'); ?>';
    var data = {
            'action': 'romme_call',
            'whatever': 1234, 
            'userID': userID,
            'function_call': 'upload_profile_photo',
            **'form_data' : formData**
        };
         console.log(data);
        jQuery.post(ajaxurl, data, function(response) {
            console.log("done");
            console.log(data);
        });
Run Code Online (Sandbox Code Playgroud)

这段代码当然会返回"Uncaught TypeError:Illegal invocation"

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

我怎么处理这个?

ade*_*neo 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);
    });
});
Run Code Online (Sandbox Code Playgroud)