Ajax的async属性

var tempArray = new Array();


function getcategoryList(){
    $.ajax({
        url:"/dhcDemo/workflow/category/list/full",
        type: "post",
        dataType: "json",
        async : false,
        success : function(data) {


            var tempArr2 = new Array() ;

            var listOB = new Object();
            listOB.id = 01;
            listOB.name = "操作列表"
            listOB.parentId = null;

            var listOB0 = data[0];
            listOB0.id = 0101;
            listOB0.parentId = 01 ;

            var listOB1 = data[21];
            listOB1.id = 0102 ;
            listOB1.parentId = 0101 ;

            var listOB2 = data[26];
            listOB2.id = 0103 ;
            listOB2.parentId = 0102 ;

            var listOB3 = data[27];
            listOB3.id = 0104 ;
            listOB3.parentId = 0103 ;


            var listOB4 = data[3];
            listOB4.id = 02 ;
            listOB4.parentId = 01 ;

            var listOB5 = data[14];
            listOB5.id = 0201 ;
            listOB5.parentId = 02 ;

            var listOB6 = data[15];
            listOB6.id = 0202 ;
            listOB6.parentId = 02 ;

            var listOB7 = data[16];
            listOB7.id = 0203 ;
            listOB7.parentId = 02 ;

            var listOB8 = data[17];
            listOB8.id = 0204 ;
            listOB8.parentId = 02 ;

            var listOB9 = data[31];
            listOB9.id = 03 ;
            listOB9.parentId = 01 ;

            var listOB10 = data[32];
            listOB10.id = 04 ;
            listOB10.parentId = 01 ;

            var listOB11 = data[33];
            listOB11.id = 05 ;
            listOB11.parentId = 01 ;

            var listOB12 = data[34];
            listOB12.id = 06 ;
            listOB12.parentId = 01 ;


            tempArr2.push(listOB);
            tempArr2.push(listOB0);
            tempArr2.push(listOB1);
            tempArr2.push(listOB2);
            tempArr2.push(listOB3);
            tempArr2.push(listOB4);
            tempArr2.push(listOB5);
            tempArr2.push(listOB6);
            tempArr2.push(listOB7);
            tempArr2.push(listOB8);
            tempArr2.push(listOB9);
            tempArr2.push(listOB10);
            tempArr2.push(listOB11);
            tempArr2.push(listOB12);
            setArr(tempArr2);
        }
    });
}

function setArr(arr) {
    this.tempArray = arr ;
}

function getArr() {
    return this.tempArray ;
}
为什么按一下回车之后会出现那么奇怪的一行,真的是日了狗了.

async就是Asynchronous(异步的英文单词前几个缩写)

ajax又是啥?Asynchronous JavaScript and Xml的缩写.武器大师叫Jax,不要混淆.

允许浏览器与服务器通信而无须刷新当前页面的技术叫ajax.

所以,问题来了,之前在没有添加这一选项的时候,默认是异步的,那是说明啥.

就是说虽然请求成功了,但是在数据还没有回来的时候,他已经开始处理success里面的内容(这时data是空的),然后做了一波骚操作,把方法里面的数组(局部变量)的值给了全局变量的数组,就好像带着多兰剑的ad点了一下六神装的龙龟(而且还是开W的)!

有个卵用?!此时心里肯定是MMP的,然后我就要考虑要不要Alt+F4了.

所以你在jsp文件里,去调用getArr()方法的时候,打印出来是undefinded,没有数据呗,这玩意折腾了我好久,改来改去的,害的我发布会都没好好看(顺便提一句坚果3挺失败的,期待一下515).

然后百度一波,发现是这个问题,那我就加上了这个属性,这个属性是说,我不许你异步了,你要按照我的规则来,所以,所有的执行就是按照我设计的顺序来.

从服务器拿到了数据之后,才开始按照顺序来,带着数据一步步的处理,然后给全局变量,这样就能取到数据了.

这里提一下success方法(敲黑板),success是说已经被那边的服务端接受响应了,不是说成功获取到响应之后的数据了,所以默认情况下,我这边知道那边响应了,我就不管了,至于数据有没有回来,不知道,我就直接上,但是加上同步,那就必须等我数据回来再做处理.

差不多了吧,后面看到什么或者有不对的再补充修正.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值