jsonp导致程序的“异步”

见下图,这里将jsonp请求设置为同步请求。如果是同步的话,那么正常的结果输出顺序应该是3,4,5,1,2(图中代码标注的顺序),但在结果顺序是1,2,3,4,5。


对两个方法分别在firebug上下断点,结果执行过程中,发现ajax方法的success是最后一个执行的


查了下jquery的文档,关于jQuery.ajax(url,[settings])的用法,文档上说:如果指定了script或者jsonp类型,那么当从服务器接收到数据时,实际上是用了<script>标签而不是XMLHttpRequest对象。这种情况下,$.ajax()不再返回一个XMLHttpRequest对象,并且也不会传递事件处理函数,比如beforeSend。

笔者,在这里认为,这里通过jsonp传来的js文件,里面存在有回调方法,所以导致success最后才执行


当把jsonp类型改为json时,恢复到ajax请求时,代码逻辑恢复正常,没有出现“异步”的情况。见下图



补充(来源于网络):

ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值