Задать вопрос
@Dimas123

Как заставить ajax функцию выполняться многократно?

Делаю кнопку обновления контента страницы wordpress c помощью ajax.

Вот так сейчас работает:
1) Первоначально контент страницы равен "А"
2) Открываем страницу, там контент "А"
3) Контент изменился на "Б" в админке
4) Нажать кнопку "Обновить" на уже открытой странице - контент поменялся на "Б"
5) Контент изменился на "В" в админке
6) Нажать кнопку "Обновить" на уже открытой странице - контент остался "Б" (это проблема, должен стать В)

Это код на странице с кнопкой, я не знаю почти js, но думаю, что проблема в нем, "do_something" выполняется один раз и при нажатии на обновить, показывается "какой-то кеш" от первого выполнения.

<div class="ajax">А</div> 
<button type="button" class="btn btn-link reload">Обновить</button>

<script>
function getajax(){ 
    $.ajax({
        type: "GET",
        url: window.wp_data.ajax_url,
        data: {
            action: 'do_something',
		postid: <?php echo $post_id; ?>
        },
        success: function (response) {
			$('.ajax').html(response);
        }
    });
}
$(function() {
   $('.reload').on('click', getajax);
})
</script>


Примерный код самого "do_something"

add_action( 'wp_ajax_do_something',        'do_something_callback' ); 
add_action( 'wp_ajax_nopriv_do_something', 'do_something_callback' ); 

function do_something_callback(){
			$my_postid = $_GET['postid'];
			$post = get_post($my_postid);
			$content = $post->post_content;
echo $content;
}
  • Вопрос задан
  • 156 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Dimas123 Автор вопроса
При таком запуске функции заработало
<button type="button" class="btn btn-link reload" onClick="getajax()">Обновить</button>


А это удалил:
$(function() {
   $('.reload').on('click', getajax);
})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vylegzhanin
Попробуйте с cache: false
function getajax(){ 
    $.ajax({
        type: "GET",
        url: window.wp_data.ajax_url,
        cache: false,
        data: {
            action: 'do_something',
            postid: <?php echo $post_id; ?>
        },
        success: function (response) {
            $('.ajax').html(response);
        }
    });
}
Ответ написан
Ваш ответ на вопрос

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

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