首页 文章

在WordPress中通过AJAX发布上传文件

提问于
浏览
0

意识到围绕这个主题有几个问题,我今天大部分时间都在搜索它们,试图找到解决问题的方法 . 这是我第一次参与这项任务 .

我试图通过WordPress中的AJAX上传文件 . 我已经在WordPress中设置了AJAX并且连接工作正常,直到我尝试传递表单数据,在哪个阶段我收到“错误请求”错误,除此之外没有其他信息 .

WordPress中的AJAX回调函数非常简单:

add_action( 'wp_ajax_nopriv_calendar_process', 'calendar_process' );
add_action( 'wp_ajax_calendar_process', 'calendar_process' );

function calendar_process() {
    echo "worked";
    die();
}

我的前端表单如下所示:

<form method="post" class="custom-cal-form">
        <input type="file" accept=".ics" name="custom-calendar" id="custom_cal_file" />

        <button class="submit-ajax">Update Calendars</button>
    </form>

我的AJAX调用如下所示:

jQuery( document ).on( 'click', '.submit-ajax', function(e) {

        e.preventDefault();

        var file_data = jQuery('#custom_cal_file').prop('files')[0];
        var form_data = new FormData();
        form_data.append('file', file_data);
        console.log(form_data);

        jQuery.ajax({

            url : calendarprocess.ajax_url,
            type : 'post',
            processData: false,
            contentType: false,
            data : {
                action : 'calendar_process',
                post_id : 'test',
                calendar : form_data
            },
            success : function( response ) {
                jQuery('.ajax-response').html( response );
            }
        });

    });

我最初得到的错误

只能在FormData实例上调用FormData.append

直到我查看了一些问题并添加了

processData:false,contentType:false,

到我的表格,现在我得到的完整错误是:

无法加载资源:服务器响应状态为400(错误请求)

这当然表明WordPress不满意 .

真的希望有人可以加入一些洞察力吗?提前致谢 .

2 回答

  • 0

    不熟悉WordPress,但听起来你的网址很糟糕 . 如果你试图连接这两个“变量?”在一起,“ . ”在Javascript中无效 . 您正在寻找 ” ” . 没有看到那些被启动的地方,所以如果这是WP特定的东西,请忽略它,哈哈 .

    我要调试的第一件事是硬编码你首先调用的页面的地址 . I.E. “测试/ test.php的” . 这至少会告诉你它是否是一个有效的地址 .

  • 0

    您在表单中错过了 enctype="multipart/form-data" 所以请尝试添加它 .

    <form method="post" class="custom-cal-form" enctype="multipart/form-data">
    

相关问题