@denis2601

Не правильно работает jQuery плагин?

Написал плагин для подгрузки постов при клике, каждый пост имеет свой ID, который должен передаваться обработчику и тот выводит данный пост, обработчик работает нормально, дело только в самом плагине, т.к. логи показывают что при клике на любую кнопку идет отправка одного и того же ID поста.

(function($) {

    var defaults = {
        idproduct: '',
        ajaxurl: '',
        ajax_timeout: false,
        delay_beforesend: 1000
    };

    $.fn.ajaxPost = function(params){

        options = $.extend({}, defaults, params);

    	function sendForm(){
		    data = {
    			'action': 'myfilter',
    			'query': options.idproduct
		    };

    		$.ajax({
    			url: options.ajaxurl,
    			data:data,
    			type:'GET',
    			beforeSend:function(xhr){
    				$('.but').text('Загрузка...');
    			},
    			success:function(data){
    				$('.but').text('');
    				$('#response').html(data);
    			}
    		});

    	};

        return this.click(function(){
            if(options.ajax_timeout) clearTimeout(options.ajax_timeout);
            options.ajax_timeout = setTimeout(sendForm, options.delay_beforesend);
        });

    };
})(jQuery);


Для запуска:
<button class="button but27">Узнать больше</button>

<button class="button but25">Узнать больше</button>

<button class="button but1">Узнать больше</button>

<script>
jQuery(document).ready(function($){

    $('.but27').ajaxPost({
        ajaxurl: '//localhost:9000/wp-admin/admin-ajax.php',
        idproduct: '27'
    });


    $('.but25').ajaxPost({
        ajaxurl: '//localhost:9000/wp-admin/admin-ajax.php',
        idproduct: '25'
    });


    $('.but1').ajaxPost({
        ajaxurl: '//localhost:9000/wp-admin/admin-ajax.php',
        idproduct: '1'
    });

});
</script>


Вот сам обработчик на всякий случай:
function filter_function(){
    print_r($_GET['query']);

	$args = array(
		'p' => $_GET['query']
	);

	$query = new WP_Query( $args );

	if( $query->have_posts() ) :
		while( $query->have_posts() ): $query->the_post();
			echo '<h2>' . $query->post->post_title . '</h2>';
		endwhile;
		wp_reset_postdata();
	else :
		echo 'No posts found';
	endif;

	die();
}

add_action('wp_ajax_myfilter', 'filter_function');
add_action('wp_ajax_nopriv_myfilter', 'filter_function');


Запросы:
http://localhost:9000/wp-admin/admin-ajax.php?action=myfilter&query=1
http://localhost:9000/wp-admin/admin-ajax.php?action=myfilter&query=1
http://localhost:9000/wp-admin/admin-ajax.php?action=myfilter&query=1
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы