@DeeUs

Почему ajax запрос возвращает 0?

Здраствуйте!
Уже всю голову сломал( не могу никак понять почему ajax запрос возвращает 0
js

jQuery.ajax({
    action: 'myfilter',
    url:myajax.url, // переменная в коде присутствует
    data:{ qqq : 123 },
    dataType: 'html',
    type:'POST', 
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        console.log(errorThrown);
    },
    success:function(data){
        console.log(data); // выводит в консоль 0
    }
});


в functions.php

add_action('wp_ajax_myfilter', 'my_filter_function');
add_action('wp_ajax_nopriv_myfilter', 'my_filter_function');
function my_filter_function(){
    echo 'work!'; //так же пробовал писать return 'work!';
    wp_die();
}

  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Потому, что вы не читаете документацию, action в вашем примере левый параметр

Надо или так:
url:myajax.url?action=myfilter
Или так:
data:{ qqq : 123,action: 'myfilter' },

но лучше делать сразу правильно и c security
var $data = {
        action: 'myfilter',
        qqq :123 ,
        security: myajax.security,
    }

    $.post(myajax.ajaxurl, $data, function ($response) {
        if ($response.success) {
            console.info('Ответ от сервера', $response);
        } else {
            // обработка ошибок
        }
    });

обработчик
add_action( 'wp_ajax_myfilter', 'my_filter_function' );
	add_action( 'wp_ajax_nopriv_myfilter', 'my_filter_function' );
	function my_filter_function() {

		$check = check_ajax_referer( 'special-string', 'security' );

		if ( empty( $check ) ) {
			$error_code = 1;
		}
		
		if ( empty( $_POST[ 'qqq' ] ) ) {
			$error_code = 2;
		}
		
		if ( ! empty( $error_code ) ) {
			wp_send_json_error( [ 'error' => $error_code ] );
		}

		$str = esc_html( $_POST[ 'qqq' ] );

		wp_send_json_success( [ 'str' => $str ] );
		
	}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы