自定义插件提供:wp-admin/admin-ajax.php 400(错误请求)

时间:2018-03-09 作者:thairish

我在调试我正在编写的插件时遇到问题。我想在用户更改select输入的选项时执行Ajax请求。事情是,它昨天完全按照预期工作,然后当我今天测试网站时(从昨天起,没有进行任何代码更改),我得到一个:

领域com/wp-admin/admin-ajax。php 400(错误请求)

我的Chrome控制台中的消息。如果我在Internet Explorer/FireFox中尝试,它不会在控制台中给出错误,但Ajax请求仍然不起作用。

我正在创建的插件是一个DigitalOcean droplet,它是使用WordPress的一键应用程序制作的。

下面是我在ajax插件上使用的基本代码:

//This is in a class\' constructor method
add_action(\'wp_enqueue_scripts\', array($this, \'plugin_prefix_scripts\'));

//PLUGIN_URL is a constant created earlier in the plugin
public function plugin_prefix_scripts() {
wp_enqueue_script(\'plugin_prefix_scripts\', PLUGIN_URL . \'scripts/frontend_script.js\');
wp_localize_script(\'plugin_prefix_scripts\', \'js_object\',
  array(
    \'ajax_url\' => admin_url(\'admin-ajax.php\')
  )
);
}

frontend\\u脚本。js公司:

$(\'#plugin-prefix-option-one, #plugin-prefix-option-two\').on(\'change\', function() {
    var data = {
        \'action\': \'plugin_prefix_page_change\',
        \'option_val\': \'some_val\',
    }

    $.post(js_object.ajax_url, data, function(response) {
        console.log(response);
});
回到课堂上:

add_action(\'wp_ajax_plugin_prefix_page_change\', array($this, \'plugin_prefix_page_change\'));

public function plugin_prefix_page_change() {
    $arr = array(1, 2, 3, 4, 5);

    wp_send_json($arr);

    //I\'ve also tried wp_die() and no die call at all but same outcome
    die();
}
我不确定如何进一步调试。非常感谢您的帮助。

谢谢

1 个回复
最合适的回答,由SO网友:thairish 整理而成

正如Jacob Peattie提到的,这个问题发生在注销的用户身上,他建议挂接wp\\u ajax\\u nopriv解决了这个问题:

add_action(\'wp_ajax_nopriv_plugin_prefix_page_change\', array($this, \'plugin_prefix_page_change\'));

结束