Javascript 数组为空我想访问数组arrcolumn[]
我想访问我声明为全局数组的数组Javascript 数组为空我想访问数组arrcolumn[],javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我想访问我声明为全局数组的数组arrcolumn[]。我正在OnSuccess1()函数中将值初始化为数组arrcolumn[]。在OnSuccess1()中初始化后,我想使用arrcolumn[]函数中的值。 但是OnSuccess()函数中的arrcolumn[]为空 var arrname = []; var arrmark = []; var arrcolumn = []; var arr = []; var arr1 = []; //display function function
arrcolumn[]
。我正在OnSuccess1()
函数中将值初始化为数组arrcolumn[]
。在OnSuccess1()中初始化后,我想使用arrcolumn[]
函数中的值。
但是OnSuccess()
函数中的arrcolumn[]
为空
var arrname = [];
var arrmark = [];
var arrcolumn = [];
var arr = [];
var arr1 = [];
//display function
function display() {
$.ajax({
type: "POST",
url: "Default.aspx/fetchStudent",
data: '{}',
contentType: "application/json;charset=utf-8",
dataType: "json",
success: OnSuccess,
error: OnErrorCall
});
$.ajax({
type: "POST",
url: "Default.aspx/fetchcolumn",
data: '{}',
contentType: "application/json;charset=utf-8",
dataType: "json",
success: OnSuccess1,
error: OnErrorCall1
});
function OnSuccess1(response) {
var objdata1 = (response.d);
var pm1 = JSON.parse(objdata1);
var len1 = objdata1.length;
arr1 = $.map(pm1, function(n, i) {
var arr_temp1 = {
0: n.name
}
arrcolumn[i] = n.name;
return arr_temp1;
});
arrcolumn = jQuery.grep(arrcolumn, function(value) {
return value != removeItem;
});
arrcolumn = jQuery.grep(arrcolumn, function(value) {
return value != removeItem1;
});
alert(arrcolumn);
}
function OnErrorCall1(response) {
alert("unable to fecth");
}
function OnSuccess(response) {
var objdata = (response.d);
var pm = JSON.parse(objdata);
var len = objdata.length;
arr = $.map(pm, function(n, i) {
var arr_temp = {
0: n.name1,
1: n.os,
2: n.cn,
3: n.pns,
4: n.dbms,
5: n.se,
6: n.c
}
arrname[i] = n.name1;
arrmark[i] = [n.os, n.cn, n.pns, n.dbms, n.se, n.c];
return arr_temp;
});
//alert(arrcolumn);
alert(arrname);
alert(arrmark);
}
function OnErrorCall(response) {
alert("error occured");
}
}
您不能保证在
OnSuccess
之后调用OnSuccess 1
。如果在完成工作之前需要这两条信息,则需要等待两个调用完成
一种简单的方法是jQuery:
调用将并行运行,但在两个调用完成之前,最后的处理程序不会运行。这段代码和问题很难理解,特别是因为您使用了类似的压缩变量名。你想达到什么目标?您能否给出一个简单的格式化示例,说明哪些有效,哪些无效?也许您的
OnSuccess1
是在OnSuccess
之前执行的?Ajax是异步的,需要花费不同的时间来完成。你不能保证哪一个先完成,把它们串联起来(啊!如果你在第一句中看到“before”而不是“after”,点击refresh。)你为什么不把这个问题重复给@Gothdo:我不认为这是重复的。这很可能是$的其他东西的复制品。当或承诺时。所有的都是答案,但OP显然是在等待回调后才开始工作。他们只是没有意识到回调可能不正常。我读完了前三页,就放弃了。
$.when(
$.ajax(/*...*/), // The first call
$.ajax(/*...*/) // The second call
).then(function(result1, result2) {
// Both calls are done now. Use `result1` (the result of the
// first call) and `result2` (the result of the second) here
});