Javascript 变量在jquerypost之后被清除
关于jQueryPost的工作原理,我一定有一些不明白的地方,因为下面的代码的行为与我预期的不一样Javascript 变量在jquerypost之后被清除,javascript,jquery,Javascript,Jquery,关于jQueryPost的工作原理,我一定有一些不明白的地方,因为下面的代码的行为与我预期的不一样 var list = []; $.post("list", function(data){ for(var i = 0; i < data.length; i++){ list.push({label: data[i].label, value: data[i].value}); alert(list[0].value); } }); aler
var list = [];
$.post("list", function(data){
for(var i = 0; i < data.length; i++){
list.push({label: data[i].label, value: data[i].value});
alert(list[0].value);
}
});
alert(list[0].value);
var list=[];
$.post(“列表”,函数(数据){
对于(变量i=0;i
注意这两个警报,第一个警报有一个值,第二个警报是“未定义”为什么?我怎样才能避开这件事?我对$.get和$.ajax也有同样的问题,所以我一定是做错了什么。我试着找了一下,但什么也没找到
更新:
var templeList = [];
$.ajax({
url: "templeList",
type: 'GET',
success: function(data){
for(var i = 0; i < data.length; i++){
templeList.push({label: data[i].label, value: data[i].value});
alert(templeList[0].value);
}
},
cache: true,
async:false
});
alert(templeList[0].value);
var templeList=[];
$.ajax({
url:“模板列表”,
键入:“GET”,
成功:功能(数据){
对于(变量i=0;i
这段代码解决了这个问题,这要感谢快速响应。
$中的函数。post
是一个回调——它异步运行(从服务器收到响应后)。这意味着在设置list
之前,第二个警报实际上首先被调用
为了避免这种情况,您通常会将第二个警报放在它自己的函数中,然后从异步回调中调用该函数:
var list = [];
$.post("list", function(data){
for(var i = 0; i < data.length; i++){
list.push({label: data[i].label, value: data[i].value});
alert(list[0].value);
}
onReady();
});
function onReady() {
alert(list[0].value);
}
var list=[];
$.post(“列表”,函数(数据){
对于(变量i=0;i中的函数$.post
是一个回调函数——它异步运行(从服务器收到响应后)。这意味着在设置list
之前,第二个警报实际上首先被调用
为了避免这种情况,您通常会将第二个警报放在它自己的函数中,然后从异步回调中调用该函数:
var list = [];
$.post("list", function(data){
for(var i = 0; i < data.length; i++){
list.push({label: data[i].label, value: data[i].value});
alert(list[0].value);
}
onReady();
});
function onReady() {
alert(list[0].value);
}
var list=[];
$.post(“列表”,函数(数据){
对于(变量i=0;i中的函数$.post
是一个回调函数——它异步运行(从服务器收到响应后)。这意味着在设置list
之前,第二个警报实际上首先被调用
为了避免这种情况,您通常会将第二个警报放在它自己的函数中,然后从异步回调中调用该函数:
var list = [];
$.post("list", function(data){
for(var i = 0; i < data.length; i++){
list.push({label: data[i].label, value: data[i].value});
alert(list[0].value);
}
onReady();
});
function onReady() {
alert(list[0].value);
}
var list=[];
$.post(“列表”,函数(数据){
对于(变量i=0;i中的函数$.post
是一个回调函数——它异步运行(从服务器收到响应后)。这意味着在设置list
之前,第二个警报实际上首先被调用
为了避免这种情况,您通常会将第二个警报放在它自己的函数中,然后从异步回调中调用该函数:
var list = [];
$.post("list", function(data){
for(var i = 0; i < data.length; i++){
list.push({label: data[i].label, value: data[i].value});
alert(list[0].value);
}
onReady();
});
function onReady() {
alert(list[0].value);
}
var list=[];
$.post(“列表”,函数(数据){
对于(变量i=0;i
post方法是异步方法,这意味着您的代码以以下方式执行:
初始化空列表
向服务器发送请求
尝试使用空列表发出警报
当数据到达一段时间后,您的函数将真正被调用
列表已填充,“第一”警报将提供正确的结果
post方法是异步方法,这意味着您的代码以以下方式执行:
初始化空列表
向服务器发送请求
尝试使用空列表发出警报
当数据到达一段时间后,您的函数将真正被调用
列表已填充,“第一”警报将提供正确的结果
post方法是异步方法,这意味着您的代码以以下方式执行:
初始化空列表
向服务器发送请求
尝试使用空列表发出警报
当数据到达一段时间后,您的函数将真正被调用
列表已填充,“第一”警报将提供正确的结果
post方法是异步方法,这意味着您的代码以以下方式执行:
初始化空列表
向服务器发送请求
尝试使用空列表发出警报
当数据到达一段时间后,您的函数将真正被调用
列表已填充,“第一”警报将提供正确的结果
Ajax是异步的。。。我当然知道这一点,但没有想到这在本例中意味着什么。Ajax是异步的。哦。。。我当然知道这一点,但没有想到这在本例中意味着什么。Ajax是异步的。哦。。。我当然知道这一点,但没有想到这在本例中意味着什么。Ajax是异步的。哦。。。我当然知道这一点,但没有想到这在这种情况下意味着什么。