Ajax通过计数器自动加载

时间:2014-08-13 01:42:13

标签: javascript jquery ajax

我从某个模板中获取了此代码,通过单击选项卡将其添加到页面中来执行该代码。我想要的只是拥有此代码的编辑副本,以便通过计时器获取帖子,而不是单击选项卡。 I have tried the setInterval but it didn't work,感谢我对Ajax和JQuery这么新的任何帮助。

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

    setInterval(function(){

        e.preventDefault();
        var bt = $(this);
        var bts = bt.parent().parent();
        var where = $(this).parent().parent().parent().next();
        var nbs = bt.parent().parent().data('nbs');
        var nop = bt.parent().parent().data('number_of_posts');

        cat = bt.data('cat_id');
        if (cat === '') {
            cat = bt.data('parent_cat');
        }
        where.parent().find('.show-more').find('.nomoreposts').remove();

        jQuery.ajax({
            type: "post",
            url: nbtabs.url,
                        dataType: 'html',
                        data: "action=nbtabs&nonce="+nbtabs.nonce+"&cat="+cat+"&nbs="+nbs+"&number_of_posts="+nop,
            cach: false,
            beforeSend : function () {
                where.parent().append('<i class="nb-load"></i>');
            },
            success: function(data){
                where.hide().html(data).fadeIn('slow');
                bts.find('li').removeClass('active');
                bt.parent().addClass('active');
                where.parent().find('.nb-load').remove();
            }
        });
    }, 5000)

})

2 个答案:

答案 0 :(得分:1)

在我们能真正帮助您进行编码之前,您必须先开始某种程度的学习。我们不能只为您编写代码,因为我们不知道您想要更新哪些元素以及如何更新。

我只能告诉你Jquery Ajax方法是这段代码如何检索url响应:

jQuery.ajax({
        type: "post",
        url: "<name of your url or maybe servlet>"
        success: function(data){
           // data is the response from your url
           // in the code sample, data was html that was inserted to an element
        }
    });

您可以将此ajax调用放入函数中并使用setInterval。您可以在setInterval功能上发出Jquery.ready()来电。

答案 1 :(得分:1)

您的第一个问题是,您尝试拨打jQuery.setInterval,而不是setIntervaljQuery.setInterval不是一个函数,所以调用它只会给你一个错误。

下一个问题是你的脚本试图改变一堆元素,使用点击的元素作为起点。这是不好的做法,因为这样的情况,调用如何调用函数可以完全破坏脚本。不知道这一切是什么:

var bt = $(this);
var bts = bt.parent().parent();
var where = $(this).parent().parent().parent().next();
var nbs = bt.parent().parent().data('nbs');
var nop = bt.parent().parent().data('number_of_posts');

是,提供建议非常困难。最安全的做法是将$(this)替换为jQuery(".nb-tabbed-head li a"),但这可能会导致问题,因为$(this)只引用一个元素,而jQuery(".nb-tabbed-head li a")可能引用多个元素。

真正最大的问题是您尝试使用的代码a)写得不好b)您还不了解。在你认真尝试之前,我强烈建议你学习一下AJAX,事件,DOM和jQuery。当你把你不了解的代码片段粘在一起时,你几乎不可能创造一个好的产品。