JS,ajax执行滞后于其他的代码,ajax执行的结果没法用??
function countChildNodes(nodeId){
$.ajax({
type: 'post',
url: "countChildNodes.tree",
aysnc:false,
data:{nodeId:nodeId},
success: function (data) {
alert("data = " + data );
resultData = data;
},
error: function (msg) {
alert(" 数据加载失败!" + msg);
}
});
alert(111); //这个比ajax先执行
return resultData; //这个也比ajax先执行
}
alert(111); //这个比ajax先执行
return resultData; //这个也比ajax先执行
所以不管怎么样,返回 跌过都是 -1 ,为什么会这样,怎么修改啊,我要返回接收的结果??? 展开
ajax的执行默认是异步的,所以如果后续有代码执行,不是写在ajax返回方法里面的话。执行结果是没发用的。
如果要用,要么把后续的代码写在ajax的返回方法里面,要么就将异步的改为同步。
如下:
1)默认为异步的
$.ajax({
type: "GET",
url: "test.json",
data: {username:$("#username").val(), content:$("#content").val()},
dataType: "json",
success: function(data){
///此处可以可以执行后续代码,使用ajax返回结果
}
});2),同步
var result ;
$.ajax({
type: "GET",async: false,
url: "test.json",
data: {username:$("#username").val(), content:$("#content").val()},
dataType: "json",
success: function(data){
result =data
}
});///测试执行后续代码可以用到ajax返回结果
function countChildNodes(nodeId){
var resultData = -1;
$.ajax({
type: 'post',
url: "countChildNodes.tree",
aysnc:false,//同步
data:{nodeId:nodeId},
success: function (data) {
return data;
},
error: function (msg) {
alert(" 数据加载失败!" + msg);
}
});
return resultData;
}
这个没用的,我试过了,还是返回 -1
aysnc:true试下?