ajax异步请求

 

    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块后面的脚本(另一个线程)例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值