Wordpress

尝试在 WordPress 插件中使用 ajax 时如何避免 admin-ajax.php 400 错误请求

当您尝试在 wordpress 插件开发中使用 ajax 技术时,与正常方式有一些不同。 我一直在努力和搜索它很长时间,很难得到一个帖子来说得很清楚。 所以在这里,我试图对其中的所有关键点做出更好的解释。

由于在wordpress后端使用ajax的方式与前端不同,而在后端,它更容易。 我只会做一个关于前端的话题。

在您阅读这篇文章之前,请确保您具有 WordPress 插件开发、ajax、php 等方面的基础知识,这样您就不会浪费时间阅读它而得不到任何帮助。

太好了,让我们开始吧。

要点1

如果您有一个单独的 javaScript 文件,假设该文件是插件文件夹下的 js/your_ajax_script.js,那么您必须确保首先使用 wp_enqueue_script() 包含此脚本。 然后使用 wp_localize_script() 创建一个 ajax_object 供您进一步使用。

add_action( 'wp_enqueue_scripts', array($this, 'enqueue_frontend_script') );

function enqueue_frontend_script(){
        wp_enqueue_script( 'ajax-script', PLUGIN_URL . 'js/your-ajax-script.js', array('jquery') );
        wp_localize_script( 'ajax-script', 'your_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}

PLUGIN_URL 是引用你的插件 url 的常量,your_ajax_object 是 ajax_object 的名称,你可以随意命名。 array( ‘ajax_url’ => admin_url( ‘admin-ajax.php’ ) 是 your_ajax_object 的属性 ajax_url 的定义。确保 admin_url( ‘admin-ajax.php’ ) 没有拼写错误

要点2

我们先来看脚本。

jQuery(document).ready(function($){
    $('.btn_del_row').click(function(){
        var id = $(this).data('id');
        var confirmalert = confirm("Are you sure ?");
        if (confirmalert == true) {
            var data = {
                'action': 'your_ajax_action',
                'id'    : id,
            };
            jQuery.post( your_ajax_object.ajax_url, data, function(response){
                alert('Got this from the server: ' + response);
            });
        }
    });
});

在此 javascript 中,确保使用您定义的 ajax_object 及其属性,在我们的例子中是 your_ajax_object.ajax_url。

在发送给动作的数据中,你必须提到动作名称,在我们的例子中是这个气味’action’:’your_ajax_action’,你可以随意命名这个动作名称,但请记住,你必须使用 在需要的地方使用完全相同的名称。 你会看见。

要点3

为登录和登录用户挂钩您的操作功能。

add_action( 'wp_ajax_your_ajax_action', 'your_ajax_action' );
add_action( 'wp_ajax_nopriv_your_ajax_action', 'your_ajax_action' );

function your_ajax_action (){
    global $wpdb;
    $id = $_POST['id'];
    // do something you like ...
    echo $result;
    wp_die();
}

看看上面的代码,希望你注意到有 5 个地方使用了在你的 javascript 代码中定义的同一个词“your_ajax_action”。 这必须完全相同,否则将无法正常工作。

在 php 函数的末尾,不要忘记使用 wp_die() 关闭它;

在 wordpress 插件中使用 ajax 有点烦人,但希望您在按照我的解释后能够成功完成。

发消息给我们

    极狐软件及网络工作室

    联系方式

    Nagykovácsi, Besenyőtelek u. 2, 2094

    +36309964556

    Official@geehootek.com

    如果您就我们如何可以帮助您公司的业务有任何问题,欢迎发送消息给我们,我们将尽快给您答复!

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注