如何在javascript中调用单个ajax函数时阻止其他ajax函数自动执行

How to stop other ajax functions executing automatically while calling single ajax function in javascript?

本文关键字:函数 ajax 其他 执行 javascript 调用 单个      更新时间:2023-09-26

我有ajax函数编写从服务器获取数据的点击。

流动

1)浏览->点击->我们得到年。[工作]

2)年->点击->我们得到月。[工作]

3)月->点击->我们得到该月的星期。[working]

三个函数都从服务器获取数据。

但是当我点击year显示月份时,

触发2个函数

1)得到我点击的月份。

2)得到year,它只被Browse链接调用(这个函数是自动调用的)。所以在get月份函数执行后,再次调用get year函数。

同样,我有第三个函数,它返回当月的星期。当我点击任何月份得到周,3个函数被称为

1)得到我的一周-点击。

2)自动调用月份。

3)自动调用年份。

我在下面列出的两个函数

1) getYear2) getMonth

函数getYears ()

function getYears() {
        var ul = $('.panel-body ul');
        if (ul.length > 0) {
            ul.html('');
        }
        var liopen = '<li class="list-group-item"><a href="#" onclick="getMonths(this);">';
        var liclose = '</a></li>';
        //showing progress bar
        progress.fadeIn(500);
        $.ajax({
            type: "POST",
            url: "Test.aspx/loadYears",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                progress.fadeOut(500);
                var obj = JSON.parse(data.d);
                console.log(obj);
                for (var i = 0; i < obj.length; i++) {
                    ul.append(liopen + obj[i] + liclose);

               }
            },
            error:function(errorData)
            {
                console.log(errorData.status);
            }
        });
    }

函数getMonths(目标)

function getMonths(target) {

        progress.fadeIn(500);
        var targetLink = $(target);
        var ifData = $(target).find('ul');
        if (ifData.length > 0) {
            ifData.html('');
        }
        var ul = $(document.createElement('ul'));
        var liopen = '<li><a href="#" onclick="getWeeks(this);">';
        var liclose = '</a></li>';
        var year = parseInt( $(target).text());
        $.ajax({
            type: "POST",
            url: "Test.aspx/loadMonths",
            data:'{year_ : "' + year + '"}',
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                progress.fadeOut(500);
                var obj = JSON.parse(data.d);
                console.log(obj);
                for (var i = 0; i < obj.length; i++) {
                    ul.append(liopen + obj[i] + liclose);

                }
                targetLink.append(ul);
                return true;
            },
            error: function (errorData) {
                console.log(errorData.status);
            }
        });
    }

浏览
<a href="#" style="z-index:3;color:grey" onclick="getYears();">Browse Site reports</a>

<ul class="list-group"><li class="list-group-item"><a href="#" onclick="getMonths(this);">2016</a></li></ul>

<ul><li><a href="#" onclick="getWeeks(this);">Jul</a></li></ul>

问题是所有的数据都附加到"a"标签本身。如果我们点击getMonths函数,它嵌套在main标签中,我们也在点击标签。如下面代码:

<a click=func1();>
  <ul>
    <li>
      <a click=function2();>
      </a>
   </li>
  </ul>
</a>

解决问题。