function LocationOnMap() {
var objData;
//参数
var index = $("#zhibiao").combobox("getValue");//污染指标
var year = $("#nianfen").combobox("getValue");//年份
//后台查询数据
$.ajax({
type: "post",
url: "LocationOnMap",
dataType: "json",
data: { index: index, year: year },
success: function (data) {
objData = data;
}
});
if (objData && objData.length > 0)
{alert(1)};
}
想实现弹框,1
但一直没弹出来,页面也没报错
1>在ajax的success里是可以正常弹出的
success: function (data) {
objData = data;
alert(objData.length);
}
2>修改如下:
将要弹的内容单独写一个方法,放在ajax的success里,ajax请求完成以后,再执行这个方法
success: function (data) {
objData = data;
f(objData );
}
function f(objData ){
if (objData && objData.length > 0) {alert(1)};
}
造成上述问题的原因是ajax请求没有完成,代码就继续往下走了。
https://www.cnblogs.com/sdya/p/4624578.html
之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题。 最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执 行完毕后才会继续运行其他代码页面假死状态解除。
而异步则这个AJAX代码运行中的时候其他代码一样可以运行。
jquery的async:false,这个属性
默认是true:异步,false:同步。
在 这里,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)例: