Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一页上有多个Ajax加载指示器_Javascript_Jquery - Fatal编程技术网

Javascript 一页上有多个Ajax加载指示器

Javascript 一页上有多个Ajax加载指示器,javascript,jquery,Javascript,Jquery,我有一个包含两个单独表单的页面,可以通过Ajax(jQuery)提交。对于这些表单中的每一个,我都希望向用户显示一个加载指示器。我发现了一段很好的代码,可以很容易地显示这些图标,但它只在有一个表单时起作用 $('.ajaxloader').hide().ajaxStart(function () { $(this).show(); }).ajaxStop(function () { $(this).hide(); }); ajaxloader是一个类,它将加载的图像显示为

我有一个包含两个单独表单的页面,可以通过Ajax(jQuery)提交。对于这些表单中的每一个,我都希望向用户显示一个加载指示器。我发现了一段很好的代码,可以很容易地显示这些图标,但它只在有一个表单时起作用

$('.ajaxloader').hide().ajaxStart(function () { 
    $(this).show(); 
}).ajaxStop(function () {
    $(this).hide(); 
});
ajaxloader是一个类,它将加载的图像显示为CSS背景图像。要使用它,我只需要添加如下内容:
Busy…

当我用我的页面(有两个表单)测试这个时,我提交了两个表单中的一个,然后两个加载指示器都出现了(这很明显)。现在我的问题是,如何显示需要显示的指示器?我正在考虑给span标记一个id属性,但是我不知道如何继续。我希望这是尽可能通用的,所以我不必硬编码和重复代码很多


谢谢

您是否考虑过在提交表单时启动它并隐藏另一个表单

$('.yourSubmitButton').click(function () {
    $(this).parent().find('.ajaxLoader').show();
});

$('.ajaxloader').hide().ajaxStop(function () {
    $(this).hide(); 
});
因此,加载程序将显示在刚刚提交的表单中(我假设您正在使用按钮或链接进行提交?),然后当ajax请求停止时,这两个都将再次隐藏。

您可以将“show loading indicator”回调附加到ajax查询本身,而不是像当前的解决方案那样执行“一网打尽”

在您的
$.ajax()调用中类似于以下内容:

$.ajax("/form1/target", {
    beforeSend: function() {
        $(".ajax-loader-1").show();
    },
    complete: function() {
        $(".ajax-loader-1").hide();
    }
});

(对于第二个表单,无论定义了Ajax调用,都有一个类似的表单)

您检查过这个吗???在单击submit按钮时显示加载指示器并不能保证Ajax请求已经实际启动,因此现在显示指示器是没有意义的。(可能是客户端验证阻止了表单的提交。)这可能是最简单的方法。谢谢