【发布时间】:2014-08-28 07:23:20
【问题描述】:
我有这段代码需要填充一个将在某些图表工具上使用的数组。所以有一个按钮将显示结果和一个复选框,使用户能够将另一组行添加到数组中。我使用.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调用成功,数组rows的内容仍然是第一次数组push。代码有什么问题?
【问题讨论】:
-
打开开发者工具并查看netowrk部分的响应。从中您可以确保调用后端并获取正确的数据。这可能是缓存问题。将缓存:false,添加到 ajax 请求并检查。
-
我认为调用成功了。我尝试将响应的串联值放在警报框上并显示出来。我也尝试将它放在另一个数组中,但仍然没有成功。
-
这是你所期望的输出jsfiddle.net/e8Nj3/25
-
是的,这就是我一直期待的结果。
-
当你没有向服务器发送任何数据时,为什么会有一个 POST 请求和
contentType: "application/json; charset=utf-8"?
标签: javascript jquery arrays ajax