如何在javascript中调用单个ajax函数时阻止其他ajax函数自动执行
How to stop other ajax functions executing automatically while calling single ajax function in javascript?
我有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>
解决问题。
相关文章:
- 通过Ajax将JavaScript函数传递给PHP文件
- jQuery成功函数中的ajax成功函数
- 访问$.ajax()函数中的两个不同数组
- 使用ajax用jquery调用php函数
- 执行ajax成功函数-jQUERY
- javascript未捕获类型错误函数ajax
- 无法调用函数 /AJAX 相关
- Javascript 回调函数 + AJAX.done.
- jQuery在函数AJAX函数内部的全局变量有问题
- Getting TypeError:$.ajax(..).done不是函数[ajax,Jquery]
- jQuery中的调用函数ajax成功响应工作一次,而不是两次
- 传递参数给函数(ajax, javascript, jquery)
- 在每个循环中运行一个函数(ajax.response)
- 运行jQuery函数.Ajax等待响应的时间足够长
- 从表单调用同一页面内的JS函数(AJAX)
- Javascript函数AJAX调用返回未定义
- 如何使javascript变量全局,并将其传递到函数ajax
- 喜欢不喜欢函数AJAX
- 从函数 Ajax 返回
- JQuery等待任何函数完成后再启动另一个函数——ajax、动画和音频