当前位置: 首页 > 面试题库 >

如何只调用一次ajax

羿博延
2023-03-14
问题内容

我从以下代码调用函数:

    <div id="header-button-news" class="header-button-info">
        <a href="javascript:;" title="Новости" onclick="showNews()"></a>
        <div class="new">2</div>
    </div>

我的功能是

function showNews()
{          
        //other js which show block

        jQuery("#loader").show();


        //ajax which load content to block
        jQuery.ajax({
            type: "GET",
            url: link,
            dataType: "html",
            success: function(data) {
                jQuery('#top-info-news').html(data);   
            },
            complete: function(){
                jQuery('#loader').hide();
            },
        });
}

我怎么只能拨打一次ajax电话?所以当内容被加载并且页面不被拒绝时不加载ajax吗?我尝试做布尔变量,但什么也没做,我支持这是因为我调用了everytime函数。请给我一个想法。

谢谢


问题答案:

当您想对该事件做某事时。

确定何时已加载数据。

var loaded = false;

function showNews() {
    //other js which show block

    jQuery("#loader").show();


    if(loaded) return;

    //ajax which load content to block
    jQuery.ajax({
        type: "GET",
        url: link,
        dataType: "html",
        success: function(data) {
            jQuery('#top-info-news').html(data);   
        },
        complete: function(){
            jQuery('#loader').hide();
        },
    });

    loaded = true;
}

one.在您想一次调用时使用。

<a href="javascript:;" title="Новости" onclick="showNews()" class="showNews"></a>

jQuery('.showNews').one('click', function() {
    // your code
});

"Attach a handler to an event for the elements. The handler is executed at most once per element."

参考



 类似资料:
  • 我有多个具有多个选择限制的无线电组,一个是by name属性,另一个是jQuery。对于每个无线电组,我在更改时将checked属性设置为false,这样每个组只能检查一个无线电。 HTML jQuery 这只适用于第一组,有什么建议吗? 编辑: 使用类选择器而不是ID: HTML jQuery

  • useEffect React钩子将在每次更改时运行传入函数。可以对此进行优化,使其仅在所需的属性更改时才调用。 如果我想从中调用初始化函数而不在更改时再次调用它,该怎么办?假设我想加载一个实体,但加载函数不需要组件的任何数据。我们如何使用钩子来实现这一点呢? 有了钩子,这可能是这样的:

  • 问题内容: 该useEffect阵营钩将运行在功能上传递的每一个变化。可以对其进行优化,使其仅在所需属性更改时调用。 如果我想从中调用初始化函数而不在更改时再次调用该怎么办?假设我要加载一个实体,但是加载功能不需要组件中的任何数据。我们如何使用钩子做到这一点? 使用钩子可能看起来像这样: 问题答案: 如果只想在初始渲染后运行给定的函数,则可以给它一个空数组作为第二个参数。

  • 问题内容: 我需要创建一个只能执行一次的函数,在第一次执行后,每次都不会执行。我从C++和Java知道可以完成此工作的静态变量,但我想知道是否有更优雅的方法来做到这一点? 问题答案: 如果用“将不执行”来表示“多次调用将不执行任何操作”,则可以创建一个闭包: 使用全局变量,其他代码可以重置“已执行”标志的值(无论您为它选择什么名称)。使用闭包时,其他代码都无法做到这一点,无论是偶然还是故意的。 正

  • 问题内容: 根据该文件对中,它说: 以ResultSet对象的形式检索当前结果。每个结果仅应调用此方法一次。 使用一些测试代码,我运行并多次调用,并观察到返回的对象指向同一个对象。因此,我猜测它不会返回您需要单独关闭的其他内容。但是,当然这对于我的JDBC驱动程序可能是唯一的。 纵观文档的,它说: 默认的ResultSet对象是不可更新的,并且具有仅向前移动的光标。因此,您只能迭代一次,并且只能从

  • 但还是没用。有什么帮助吗