Javascript Ajax计数器自动加载

Javascript Ajax计数器自动加载,javascript,jquery,ajax,Javascript,Jquery,Ajax,我从某个模板中获得了这段代码,它通过单击选项卡将帖子获取到页面中来执行。我只想拥有一份经过编辑的代码副本,通过定时器获取帖子,除了点击标签,我非常感谢对Ajax和JQuery如此陌生的任何帮助 jQuery(document).ready(function($) { setInterval(function(){ e.preventDefault(); var bt = $(this); var bts = bt.parent().pa

我从某个模板中获得了这段代码,它通过单击选项卡将帖子获取到页面中来执行。我只想拥有一份经过编辑的代码副本,通过定时器获取帖子,除了点击标签,我非常感谢对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)

})
jQuery(文档).ready(函数($){
setInterval(函数(){
e、 预防默认值();
var bt=$(本);
var bts=bt.parent().parent();
其中的变量=$(this.parent().parent().parent().next();
var nbs=bt.parent().parent().data('nbs');
var nop=bt.parent();
cat=bt.data(“cat_id”);
如果(类别==''){
cat=bt.data(‘父类’);
}
其中.parent().find('.show more').find('.nomoreposts').remove();
jQuery.ajax({
类型:“post”,
url:nbtabs.url,
数据类型:“html”,
数据:“action=nbtabs&nonce=“+nbtabs.nonce+”&cat=“+cat+”&nbs=“+nbs+”&职位数量=“+nop,
卡赫:错,
beforeSend:函数(){
其中.parent().append(“”);
},
成功:功能(数据){
where.hide().html(data.fadeIn('slow');
bts.find('li').removeClass('active');
bt.parent().addClass('active');
其中.parent().find('.nb load').remove();
}
});
}, 5000)
})

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

我只能建议您使用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
        }
    });
jQuery.ajax({
类型:“post”,
网址:“
成功:功能(数据){
//数据是来自url的响应
//在代码示例中,数据是插入到元素中的html
}
});

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

第一个问题是您试图调用
Jquery.setInterval
,而不是
setInterval
jQuery.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标签头li a”)
,但这可能会导致问题,因为
$(this)
只引用一个元素,而
jQuery(.nb标签头li a”)
可能引用多个元素


实际上,最大的问题是您试图使用的代码a)编写得很糟糕,b)您还不理解。我强烈建议您在认真尝试之前先学习AJAX、事件、DOM和jQuery。当你把你不懂的代码拼凑在一起,而这些代码是你不认识的人写的,你几乎不可能创造出一个好的产品。

你能提供一些你目前的进展情况以便于调试吗?谢谢。@MichaelSanchez事实上我的进步不算什么,我在jQuery方法方面经验不足。他尝试了
setInterval
:你可以为弹出窗口编写一个函数,并在延迟后使用setInterval调用它。谢谢你,这真是一个很好的建议,但我认为我的问题很容易解决。。只需将事件从单击更改为计数器。