WordPress Ajax 400错误请求

时间:2018-08-05 13:14:45

标签: php ajax wordpress

我浏览了该网站上21条不同的帖子,以及Google上的许多其他帖子,目前位于第13页,而我实际上要哭了。我是一名初级开发人员,我真的很想让它工作。由于某种原因,我似乎无法掌握它。

我正在尝试创建一个插件,该插件将允许我将blob文件上传到WordPress媒体库,但是失败很惨。

插件结构如下:

ajax_test/
-- ajax_test.php

-- assets/
-- -- js/
-- -- -- uploader.js

在一个名为uploader.js的文件中,我有以下代码:

mediaRecorder.addEventListener('stop', function() {
    audio.src = URL.createObjectURL(new Blob(recordedChunks));
    downloadLink.href = URL.createObjectURL(new Blob(recordedChunks));
    downloadLink.download = 'file' + Date.now() + '.wav';
    downloadLink.classList.remove('hide');

    var blob = new Blob(recordedChunks);
    var fd = new FormData();
    fd.append('fname', 'test.wav');
    //fd.append('data', event.target.result);
    fd.append('file', blob);
    fd.append('action', 'send_message');

    console.log('about to ajax');

    $.ajax({
            url: ibenicUploader.ajax_url,
            type: 'POST',
            data: fd,
            cache: false,
            processData: false, // Don't process the files
            contentType: false, // Set content type to false as jQuery will tell the server its a query string request
            success: function(data, textStatus, jqXHR) {  

                if( data.response == "SUCCESS" ){

                    console.log('success');

                } else {
                    console.log('error');
                }
            }
        });

        console.log('after ajax');

});

在ajax_test.php文件中,我有以下代码:

function ibenic_enqueue() {
wp_enqueue_script( 'ibenic-uploader', plugins_url( 'assets/js/uploader.js', __FILE__  ), array('jquery'), '1.0', true );
wp_localize_script( 'ibenic-uploader', 'ibenicUploader',
            array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts', 'ibenic_enqueue' );

在控制台中,我得到

  

关于ajax

     

ajax之后

     

/wp-admin/admin-ajax.php 400(错误请求)

即使我将ibenicUploader.ajax_url,更改为完整路径,也会遇到相同的错误。

请有人可以帮助我将此文件上传到wordpress

1 个答案:

答案 0 :(得分:0)

您必须登录它才能工作,因为 wp_ajax 与登录用户一起工作。

add_action("wp_ajax_your_fn", "your_fn");

访问者使用 wp_ajax_nopriv

 add_action("wp_ajax_nopriv_your_fn", "your_fn");