怎么ajax请求数据的内存,ajax返回的数据里,如何存储?

dd70551713e4d966d67314c289b95248.png

DIEA

看楼上的这些答案,有些是答主根本就不知道原因在那乱说,有些是说的比较片面。那我来解释下吧。首先答主你要了解,js是单线程的,就是他从被调用开始,会一条道跑到黑,直到结束为止。然后$.ajax()当然,这是个封装过的函数。无论是通过ActiveXObject或者XMLHttpRequest的这种真·ajax方式,还是jsonp这种伪·ajax的方式,它们都是异步的,而且是需要等待相应的。那么,我帮你捋一下思路,当页面加载了脚本之后就会开始运行,一直运行到最后的一句为止。当然,其中也许会有你的这句$.ajax,但是也只是发起一个请求就没了,(只不过js引擎在背地里会提供一个回调的入口,这个入口暂且放一边,后面会说)然后丝毫不会等待的继续运行下面的语句,直到最后。既然是ajax请求,就会有响应的时候。请求相应就会调用之前提到的回调入口,而你需要做的就是,把你想要执行的代码注册到这个回调入口里($.ajax里的success再或者error以及complete都是回调的入口)也许光说理论你有点懵。那我给你写个例子吧:首先声明一个函数:varshow=function(){console.log(window.data);};然后来这么两句:$.ajax({url:'xxx',success:function(data){window.data=data;show();}});show();(故意将ajax这行写成一句,方便看到我的重点)假设可以通过xxx接口成功返回字符串:"abc",那么你会看到控制台里:undefined"abc"第一个undefined是$.ajax后面的show();打印出来的;第二个"abc"是$.ajax中注册的success回调中打印出来的。这里有两个重点:先执行的是$.ajax后面的show();,而不是$.ajax中的success。原因:因为是异步,因为是单线程因为第1点,先执行show();的时候,ajax的请求还没有返回,所以window.data还没有被赋值,所以就是undefined以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值