在 Wordpress 中使用 jQuery 发布数据成功,但使用 FormData 失败

Posted

技术标签:

【中文标题】在 Wordpress 中使用 jQuery 发布数据成功,但使用 FormData 失败【英文标题】:Posting data with jQuery in Wordpress succeeds, but fails with FormData 【发布时间】:2021-02-10 04:07:37 【问题描述】:

我想在我的 Wordpress 插件中使用 jQuery/Ajax 上传文件。 javascriptphp 调用有效。所以接线等工作。但是,一旦我发布了发布文件所必需的 formData,我就不再使用 PHP 函数了。

JavaScript,

        var doesntWork = new FormData();
        doesntWork.append('file', 'a name');

        var withthisItWorks = 'text'

        var data = 
            'action': 'emfi_file_upload',
            'data': doesntWork
        

        $.ajax(
            type: "POST",
            url: ajax_object.ajaxurl,
            data: data,
            success: function(response) 
                jQuery('#emfi-message').html(`<span style="color: green;">Respons: $response</span>`);
            
        );

PHP 函数只返回一个字符串答案:

function emfi_file_upload_callback() 
    echo 'Yes, in the callback';
    wp_die();

当我将纯文本放入数据对象时,我会从 PHP 函数中得到答案。当我把formData放进去时,没有答案。我在互联网上尝试了很多示例,但每次都归结为这一点。添加 contentType: false 和 processData: false,正如在其他地方提到的,没有帮助。怎么了?

【问题讨论】:

【参考方案1】:

发送的所有字段都必须在 formdata 对象中。 此外,要让 FormData 与 jQuery.ajax 一起使用,processDatacontentType 必须设置为 false。

    var doesWork = new FormData();
    doesWork.append('file', someFile);
    doesWork.append('action', 'emfi_file_upload');
  
    $.ajax(
        type: "POST",
        url: ajax_object.ajaxurl,
        data: doesWork,
        contentType: false,
        processData: false,
        success: function(response) 
            jQuery('#emfi-message').html(`<span style="color: green;">Respons: $response</span>`);
        
    );

【讨论】:

以上是关于在 Wordpress 中使用 jQuery 发布数据成功,但使用 FormData 失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在wordPress中使用jquery

在 wordpress 中使用 jquery datepicker

如何在 WordPress 中使用 jQuery Cycle 插件?

在 Wordpress 中使用带有 Ajax 的 jQuery 脚本

如何在 wordpress 菜单中使用 jquery?

在 Wordpress 内联脚本中使用 jQuery