在 JQUERY AJAX 函数之后重置应用程序状态

Posted

技术标签:

【中文标题】在 JQUERY AJAX 函数之后重置应用程序状态【英文标题】:Reset application STATE after JQUERY AJAX Function 【发布时间】:2022-01-08 02:04:19 【问题描述】:

有没有办法在每次调用 JQuery Ajax 函数后重置应用程序状态?

我正在开发一个小应用程序:用户单击一个按钮来调用一个函数。但是之后,当用户想要点击其他按钮来调用相同的功能时,第一个点击按钮的动态ID仍然存在,所以其他按钮不能再被寻址了。

代码:

$('#submitComment').on('click', function()
        var id = $(this).data('id');
        var thiselement = $(this);

        $.ajax(
            url: 'includes/updateicon.php',
            type: 'POST',
            data: id:id,
            dataType: 'html',
            success: function(data)

                if (data) 

                    $('#submitComment').attr("disabled", true);
                    $('#customComment').val("");
                    $('#updatedicon-'+id).html("DONE").removeClass('badge-danger').addClass('badge badge-success');
                    
                    # CODE HERE TO RESET THE STATE OF THE APP
                 
                    else 

                    $('#customContent').load("custom/static/error.html");
                    
                    

            ,
            error: function(jqXHR, textStatus, errorThrown)
                $('#customContent').html("There was an Error about getting the Content:" + errorThrown);
            
        );
    );

【问题讨论】:

【参考方案1】:

您正在根据 ID 搜索元素,并且 ID 必须是唯一的(这很可能会导致您的错误)。

一个简单的解决方法是:

$('.submitComment').on('click', function() 
    var id=$(this).attr('id');
    $.ajax(data:id:id);
)

【讨论】:

我之前尝试过将其更改为类选择器而不是 ID(尽管每个按钮都应该有其动态 ID)但它没有工作.. 它只在第一次工作第一个按钮的 ID(无论哪个按钮先点击)会一直存在并阻止代码将新 ID 分配给其他按钮... @1heone 你试过用 LET 代替 VAR 吗?这可能是一个范围界定问题,其中 VAR 可能会提升和毒化变量

以上是关于在 JQUERY AJAX 函数之后重置应用程序状态的主要内容,如果未能解决你的问题,请参考以下文章

第六章 ajax

Ajax 之前的 JQuery .each 处理

在使用 jquery .ajax() 重定向的 POST 之后获取实际 URL

在 jquery 更新 DOM(AJAX 请求)之后做某事

jQuery.ajaxSetup()

重置 jquery 选项卡