ajax执行前方法,JQuery-Ajax第二个函数在第一个函数之前执行

这篇博客探讨了在JavaScript中处理两个下拉列表的问题,其中一个列表的更改触发另一个列表的加载。作者遇到的问题是,在页面加载时,LoadState()函数在LoadCountry()完全执行之前运行,导致获取到的国家ID为0。通过使用setTimeout解决此问题,但寻求更优雅的解决方案。
摘要由CSDN通过智能技术生成

我有两个下拉列表,一个是国家,另一个是州。第一次下降后第一次下降。我有两个功能,如

LoadCountry()和LoadStates(),其中LoadState在LoadCountry之后触发。

我的问题是,当我尝试将drpCountry的值设为时,得0或null

var CId = $("#" +'<%= drpCountry.ClientID%>')。val();。

问题仅发生在页面加载时。当我更改drpCountry的值时数据加载

在drpState中正确地说。面对同样的问题,其他网页也有4到5个下拉菜单。但是当我通过设置setTimeout来改变执行速度时

精细。

我可以强烈地说数据正在加载相关数据。

a,我在控制台中查了一下。

b,当我更改下拉数据加载到drpState正确时

为什么LoadState()在LoadCountry()执行完全执行之前执行?

$(function() {

LoadCountry();

LoadState();

/* when set timeout LoadState works fine */

//setTimeout(function () {

//LoadState();

//}, 200);

/* Changed Timeout when upload to server */

//setTimeout(function () {

//LoadState();

//}, 300);

$("#").change(function() {

LoadState();

})

});

function LoadCountry() {

$.ajax({

type: 'Post',

url: 'country.aspx/Loadcountry',

contentType: "application/json; charset=utf-8",

data: "{}",

dataType: 'json',

success: function(data) {

console.log(data);

if (data.d.length > 0) {

$("#").empty();

for (var i = 0; i < data.d.length; i++) {

var Value = data.d[i];

var Id = Value.split('/')[0];

var Name = Value.split('/')[1];

$("#").append($('', {

value: Id,

text: Name

}));

}

} else {

$("#").empty();

$("#").append($('', {

value: "0",

text: "--Select--"

}));

}

}

});

}

function LoadState() {

var CId = $("#" + '').val();

alert(CId); //Getting Zero as Cid but have values

$("#").append($('', {

value: "0",

text: "--Loading--"

}));

$.ajax({

type: 'Post',

url: 'country.aspx/LoadState',

contentType: "application/json; charset=utf-8",

data: "{'CId':'" + CId + "'}",

dataType: 'json',

success: function(data) {

console.log(data);

if (data.d.length > 0) {

$("#").empty();

for (var i = 0; i < data.d.length; i++) {

var Value = data.d[i];

var Id = Value.split('/')[0];

var Name = Value.split('/')[1];

$("#").append($('', {

value: Id,

text: Name

}));

}

} else {

$("#").empty();

$("#").append($('', {

value: "0",

text: "--Select--"

}));

}

}

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值