AJAX не называется WordPress .PHP-файл

У меня есть один клас и один .PHP-файл,

Во-первых, функции.php это .php-файл, где это мой метод, который я вызываю в другом классе.

//PHP
add_action('wp_ajax_getJSONCurrencies', 'getJSONCurrencies');
add_action('wp_ajax_nopriv_getJSONCurrencies', 'getJSONCurrencies');

function getJSONCurrencies () {
        $endpoint = $_POST['endp'];
        $access_key = $_POST['access'];
        $currencies = $_POST['curren'];
        $source = $_POST['sour'];
        $format = 1;

        // Initialize CURL:
        $ch = curl_init('https://apilayer.net/api/'.$endpoint.'?access_key='.$access_key.'&currencies='.$currencies.'&source='.$source.'&format='.$format.'');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        // Store the data:
        $json = curl_exec($ch);
        curl_close($ch);

        // Decode JSON response:
        echo json_decode($json, true);

    }

И мой второй класс, custom-wc-widget…php, где я вызываю свою первую функцию класса.

jQuery( document.body ).bind( 'bejob_price_slider_create bejob_price_slider_slide', function( event, min, max ) {

        var simMoneda = jQuery('.woocommerce-currency-switcher-form > select option:selected').text();
        var simbolo = simMoneda.split(",");

        simMoneda = simbolo[1].trim();

        var endpoint = 'live';
        var access_key = '0a85b3479a1a24ceaba1d04f030e7028';
        var currencies = 'USD,ARS,CLP,PEN,COP,MXN,PAB';
        var source = 'EUR';

        jQuery.ajax({
           type:'POST',
           url: 'ajaxurl',
           //url: 'https://apilayer.net/api/' + endpoint +'?access_key=' + access_key + '&currencies=' + currencies + '&source=' + source + '&format=' + 1,
           data: {
                endp: endpoint,
                access: access_key,
                curren: currencies,
                sour: source,
                action: 'getJSONCurrencies'
            },
            dataType: "json",
            success: function(data) {
                 debugger;
               console.log(data);
            }
        });

        if ( min == 0) {
                jQuery( '.bejob_price_slider_amount span.from' ).html( "Gratis");

        } else {
                jQuery( '.bejob_price_slider_amount span.from' ).html( min + simMoneda );

        }
        jQuery( '.bejob_price_slider_amount span.to' ).html( max + simMoneda );

        jQuery( document.body ).trigger( 'price_slider_updated', [ min, max ] );
    });

Этот второй класс имеет символы, потому что он находится внутри Echo php, моя идея заключается в том, чтобы отправить данные в AJAX-операторе в мою функцию getJSONCurrencies, а затем в функции успеха из метода ajax получить объект JSON, который я собираюсь использовать на своей веб-странице.

Проблема в том, когда я запускаю отладчик, он никогда не входит в мой метод Ajax, и я не знаю, почему он не входит туда.

1 ответ

  1. Как вы называете jquery? Если у вас есть другая функция, пожалуйста, отредактируйте свой вопрос.

    попробуйте использовать код wp_localize_script, как показано ниже:

    add_action('wp_ajax_getJSONCurrencies', 'getJSONCurrencies');
    add_action('wp_ajax_nopriv_getJSONCurrencies', 'getJSONCurrencies');
    
    wp_enqueue_script('getJSONCurrencies', get_template_directory_uri().'/js/getJSONCurrencies.js', array('jquery'), '1.0', true );
    wp_localize_script('getJSONCurrencies', 'ajax_var', array(
        'url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('ajax-nonce')
    ));