мой JQuery Ajax не работает на моем WordPress сайте - PullRequest
0 голосов
/ 09 января 2011
<div class="home-thumbs bottom-thumbs">
<?php $home_query_bottom = new WP_Query("cat=&showposts=20&offset=5"); $b = 0; ?>
<ul class="thumbs">
    <?php while ($home_query_bottom->have_posts()) : $home_query_bottom->the_post();
        $do_not_duplicate = $post->ID; $b++; ?>

        <li class="post-<?php the_ID(); ?> thumb"><?php get_the_image( array( 'custom_key' => array( 'thumbnail' ), 'default_size' => 'thumbnail', 'width' => '160', 'height' => '160' ) ); ?></li>
    <?php endwhile; wp_reset_query(); $b = 0; ?>
</ul>
</div>
<div id="output"></div>
<script type="text/javascript">


$('.go-right').click(function(){

$.ajax({

            type: "POST",
            url: "process_thumbs.php",
            data:   "showposts=25",
            success: function(html){
                $("#output").html(html);
            }

});  
});
</script>

// process_thumbs.php
  <body>

    <?php $numposts = $_POST['showposts']; ?>
    <div><?php echo "this is the amount of posts to be shown: $numposts"; ?></div>
    </body>

Похоже на простой вызов ajax..go-right существует, это просто в другом файле, и я проверил, что щелчок выполняется.Этот вызов ajax в принципе не работает.Может быть, кто-то мог бы определить, если мой код неверен.

В идеале я хочу взять этот цикл wp-Query и использовать ajax для повторного запуска этого цикла с другими showposts и смещением, если кто-то нажмет.

Ответы [ 3 ]

0 голосов
/ 09 января 2011

В Wordpress (я использую версию 3.0 и выше) из-за конфликтов с другими библиотеками javascript (например, прототипом) вы должны написать:

$JQuery('.go-right').click(function(){

вместо

$('.go-right').click(function(){

Кроме того, проверьте Firebug, чтобы убедиться, что ссылка на вашу библиотеку Jquery верна.

Еще одна вещь ... Wordpress уже включает в себя jQuery, вы можете получить его, написав:1011 * Первая строка ДОЛЖНА идти перед второй строкой (wp_head ()), иначе она не будет работать.

0 голосов
/ 09 января 2011

Я переписываю ваш код в обработчике готовности документа:

$ (function () {Ваш код});

Работает хорошо.

Так что или это проблема вашего кода, связанная с позицией, ИЛИ вы что-то неправильно написали.

Следует моему тестовому коду:

<html>
    <head>
    <script type="text/javascript">

    $(function() {

    $('.go-right').click(function(){

        $.ajax({

                    type: "POST",
                    url: "process_thumbs.html",
                    data:   "showposts=25",
                    success: function(html){
                        $("#output").html(html);
                    }

        });  
    });

        });

    </script>

    </head>
    <body >


    <div id="output"></div>

    <a class="go-right">RIGHT</a>

    </body>
    </html>
0 голосов
/ 09 января 2011

Убедитесь, что .go-right равен до кода jQuery ИЛИ (лучше), оберните ваш jquery в

$(document).ready(function() {
})

или аналогичный, чтобы убедиться, что обработчик действительно подключен кваш .go-right элемент

Не выводите <body> теги в ваш process_thumbs.php, возможно, это сбивает с толку jQuery.

Проверьте вкладки консоли / сети Firebug, чтобы убедиться, что запросдействительно отправляется.

Добавьте error обратный вызов к вашему .ajax, чтобы убедиться, что ваш вызов ajax действительно выполняется.


Да, используйте абсолютные URL, но сВспомогательная функция WordPress:

...
url: '<?php echo get_bloginfo('url').'/wp-content/myplugin/mycallback';?>'
...

Таким образом, все ваши URL будут относительно корневого URL Wordpress.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...