使用WordPress调用AJAX时出现禁止的错误

时间:2020-11-17 作者:msolla

当我尝试使用ajax调用时,我的插件开发中出现了403个错误。我禁用了所有插件并激活了默认主题,没有作品。我没有缓存插件,也没有服务器缓存。

我得到:403禁止访问服务器上的此资源被拒绝!

PHP

add_action(\'wp_ajax_actualizar_jornada\', \'actualizar_jornada\' );
add_action(\'wp_ajax_nopriv_actualizar_jornada\', \'actualizar_jornada\');

    function actualizar_jornada() {
        $postdata = $_POST;
    
    
        echo $postdata;
    
        wp_die();
    }
本地化脚本

wp_register_script(\'lmfront-js\', plugin_dir_url( __FILE__ ) . \'../includes/js/lmfront.js\');
wp_localize_script(\'lmfront-js\', \'strings\', array(
    \'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
    \'lstJugadoresParticipantesPlaceholder\' => __(\'Find Players\', \'leaguemanagement\'),
    \'lstEquiposTeamsPlaceholder\' => __(\'Find Teams\', \'leaguemanagement\'),
));
wp_enqueue_script(\'lmfront-js\');
JS公司

$(\'.btn-update-jornada\').on(\'click\', function(){
    var idjornada = parseInt($(this).data(\'idjornada\'));
    var data = {
        \'action\': \'actualizar_jornada\',
        \'idjornada\': idjornada,
        \'marcador_local\': parseInt($(\'#resultado-local-\' + idjornada).val()),
        \'marcador_visitante\': parseInt($(\'#resultado-visitante-\' + idjornada).val()),
    };
    
    $.ajax({
       type : "post",
       url : strings.ajaxurl,
       data : data,
       error: function(response){
           console.error(response);
       },
       failure: function(response){
           console.error(response);
       },
       success: function(response) {
           console.log(response);
       }
   });
});

1 个回复
SO网友:Razon Komar Pal

不确定发生此错误的原因!您可以跟随this article 或者,您可以通过以下步骤查看代码:

使用wp_enqueue_scriptswp_ajax_{action_name} wp_ajax_nopriv_{action_name} 在插件文件中。假设我的插件名为test-plugin 我的主要插件文件名是test-plugin.php

<?php
/*
Plugin Name: Test Plugin
Plugin URI: http://wordpress.org
Description: This just a test plugin.
Author: Razon
Version: 1.0.0
Author URI: http://raazon.github.io/
*/

add_action(\'wp_enqueue_scripts\', \'wp_docs_enqueue_scripts\');
function wp_docs_enqueue_scripts()
{
    wp_enqueue_script(\'scripts\', plugin_dir_url(__FILE__) . \'scripts.js\', [\'jquery\']);
    wp_localize_script(\'scripts\', \'ajax_object\', array(
        \'ajaxurl\' => admin_url(\'admin-ajax.php\'),
        \'lstJugadoresParticipantesPlaceholder\' => __(\'Find Players\', \'leaguemanagement\'),
        \'lstEquiposTeamsPlaceholder\' => __(\'Find Teams\', \'leaguemanagement\'),
    ));
}

add_action(\'wp_ajax_actualizar_jornada\', \'actualizar_jornada\');
add_action(\'wp_ajax_nopriv_actualizar_jornada\', \'actualizar_jornada\');
function actualizar_jornada()
{
    $id = isset($_POST[\'id\']) ? $_POST[\'id\'] : \'\';
    echo $id;
    wp_die();
}
还有我的JS 文件脚本。js公司

(function ($) {
    "use strict";
    jQuery(document).ready(function () {

        $.ajax({
            url: ajax_object.ajaxurl,
            type: \'POST\',
            data: {
                action: \'actualizar_jornada\',
                id: 100,
            },
            beforeSend: function () {
                console.log(\'Sending request...\');
            },
            success: function (response) {
                console.log(response);
            },
            error: function (errorThrown, status, error) {
                console.log(status);
            }
        });

    });
})(jQuery);
我已经在我的本地进行了测试,并且工作正常。如果此代码在您的网站/主机中不起作用,那么您的网站/主机中还有其他问题

相关推荐

“Add to Cart”链接css类“ajax_add_to_cart”不会显示在WooCommerce的小工具侧栏中

我创建了Woocmerce小部件,它将按产品类别创建循环。产品循环结果应与woocommerce默认内容产品相同。php文件。循环(属性、链接等)中的一切都很好,除了css class. 我不知道我到底把事情搞砸了,but i guess the main problem is within $defaults variable or in woocommerce_loop_add_to_cart_args filter. 请有人帮帮我。这是我的密码-function widget($args, $ins