AjaxAjax回调数据赋值给变量的题材

形容就首文章是以自者Ztree的文章引发的自家本着js的钻研,不了解的得先瞧上面Ztree的返数据那块,因为凡暨一个稍例子,上篇是兼备的代码,上图:

Ajax 1

我声明全局变量tree,在Success回调函数里拿回调的数量赋值给变量,我立即纪念方根据编程习惯做法也都是马上,但是问题应运而生了,我先行简单说下Console.info这个方法是以控制台打印数据,因为alert返回数据的早晚要是json一些数目的时光,你是alert不出实际数据的,这个措施是试用火狐的,IE是特别的好像,这个不讨论这个,火狐上装的是Firebug插件,打印的结果是,如图:

Ajax 2

打印的结果是从未有过的,接着我随下这种措施如下图
,也尽管是自己将打印在回调函数里是可以打印出来数据的,

Ajax 3

这时我问题的凡干吗回调过来的数量不克赋值给全局变量,紧接着自己看了Jquery
的API,发现了协同的主意,也就算是若下图:

Ajax 4

async:
false在ajax里长是好的,当然除了这个艺术之外还可以管$.fn.zTree.init($(“#treeDemo”),
setting,
tree);这段代码写于回调函数里呢是得实现树形菜单的,但是本人要么纠结为什么回调的数目部能赋值给变量,接下去自己有召开了其它一个尝试,如下图:

Ajax 5

自以回调里面打印了生,又于外面打印了下,结果如果下图:

Ajax 6

事先打印出来的是脚的,问题比明了了,虽然我事先勾勒的ajax但是还是先行实行的底的代码,所以很变量tree是打印不出的,而于回调里面的凡新兴赋值的之所以能够打印出来,总结下那便是遵照自同开始的写法异步请求不克将回值传被全局变量的,因为JS只管执行时代码,顺序执行。发送请求了,那是请求响应的事,它不管这些,只管继续执行在其面前的代码,所以是得不交变量赋值的,要惦记传于变量可以用并啊即是async:
false,但是共同是如果共同请求将锁住浏览器,用户其它操作必须等请求完成才好推行。如果想使赋值给Ztree的树形菜单数据以来,我最后还是选择了于回调函数里进行初始化,想在深切了解之豪门好拘留下JS异步原理,这里自己不怕非多讨论了,大家好省Ztree那篇的代码,好了,结束。

首先涂鸦比较正式的刻画技术文章尽量写的事无巨细些,之前一直学习研讨事物吗没倒上勾画。以后时间允许的说话我会尽量把之前的总结为大家,比较技术是交流和共享的,希望大家都知晓,不管事技术好之尚是正入门的还可以看懂,希望对得之爱人或多或少相助。有啊问题可以申报让本人,我会马上的受你们对。QQ571001325

相关文章