Javascript jquery ajax-第二个数组推送不工作
我有这段代码,需要填充一个数组,该数组将在一些图表工具上使用。因此,有一个显示结果的按钮和一个复选框,使用户可以向数组中添加另一组行。我对数组使用Javascript jquery ajax-第二个数组推送不工作,javascript,jquery,arrays,ajax,Javascript,Jquery,Arrays,Ajax,我有这段代码,需要填充一个数组,该数组将在一些图表工具上使用。因此,有一个显示结果的按钮和一个复选框,使用户可以向数组中添加另一组行。我对数组使用.push(),它可以正常工作。现在的问题是,我第二次ajax调用的第二次推送没有将数据添加到数组中。这是我的密码: $.ajax({ type: "POST", url: "Default.aspx/GetSubCategorySalesPerTerritory", contentType: "application/json
.push()
,它可以正常工作。现在的问题是,我第二次ajax调用的第二次推送没有将数据添加到数组中。这是我的密码:
$.ajax({
type: "POST",
url: "Default.aspx/GetSubCategorySalesPerTerritory",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$.each(response.d, function (i, val) {
var values = new Array(val.From, val.To, val.Thickness);
rows.push(values); //this one works
});
if ($('#chkPromotion').is(":checked")) {
$.ajax({
type: "POST",
url: "Default.aspx/AddPromotion",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$.each(data.d, function (i, val) {
var values = new Array(val.From, val.To, val.Thickness);
rows.push(values); //this one fails
alert("pushed");
});
},
failure: function (data) {
alert(data.d);
}
});
drawChart(rows);
} else {
drawChart(rows);
}
},
failure: function (response) {
alert(response.d);
}
});
我真的不知道为什么失败了。发生的情况是,即使满足条件并且第二个ajax调用成功,数组
行的内容仍然是第一个数组推送。代码有什么问题?由于ajax的异步特性,您得到的结果实际上是预期的
您应该在第二个ajax调用的成功回调中调用该方法,如下所示
$.ajax({
type: "POST",
url: "Default.aspx/GetSubCategorySalesPerTerritory",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$.each(response.d, function (i, val) {
var values = new Array(val.From, val.To, val.Thickness);
rows.push(values); //this one works
});
if ($('#chkPromotion').is(":checked")) {
$.ajax({
type: "POST",
url: "Default.aspx/AddPromotion",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$.each(data.d, function (i, val) {
var values = new Array(val.From, val.To, val.Thickness);
rows.push(values);
});
drawChart(rows); // here
},
failure: function (data) {
alert(data.d);
}
});
} else {
drawChart(rows);
}
},
failure: function (response) {
alert(response.d);
}
});
打开开发人员工具并检查netowrk部分中的响应。因此,您可以确保后端调用并获得正确的数据。这可能是缓存问题。将cache:false添加到ajax请求并检查。我认为它调用成功。我尝试将响应的串联值放在一个警报框中,结果显示出来。我还尝试将其放入另一个数组中,但仍然没有成功。这是您所期望的结果吗?是的,这是我一直期待的结果。当您不向服务器发送任何数据时,为什么会有POST请求和contentType:“application/json;charset=utf-8”
?这实际上回答了我的问题。非常感谢。但是我不理解ajax的这种“异步性质”。@DustineTheGreat希望这能让您了解ajax的异步性质