搭拉巴DLB
2018-06-07 09:31
采纳率: 66.7%
浏览 2.2k

ajax设置async:false 执行同步加载失败

代码结构:
console.log("1");
$.ajax({
async:false,
url:"url",
dataType:"jsonp",
data:{},
success:function(data){
console.log("2");
}
})
console.log("3");

执行的结果是1 3 2,怎么回事啊,已经设置async是false了,,我想要执行的结果是1 2 3,别说把3的执行放到success函数里,那样直接异步加载也可以。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 已采纳

    jsonp是都是异步的,因为用的script加载,设置async没用,要使用返回值只能回调里面执行相关js代码

    点赞 打赏 评论
  • 倾世烟火为你而唱 2018-06-07 09:43

    使用ajax方式向后台发起请求,请求成功后在success收到回调,因为向后台执行请求后台会有相应的相应时间,所以3会比2提前输出。
    为什么3会在2之前?
    那是因为你再调用ajax的时候程序只负责让ajax去执行请求,并不是告知程序等待success成功后在继续调用下面的内容
    所以你在执行了ajax的时候只是相当于向后台发起了请求,程序还会继续向下运行

    点赞 打赏 评论
  • qq_40255099 2018-06-07 10:04

    Jquery的API,说的就是说JSONP格式,不支持跨域同步的,你试一下json格式,是可以同步的

    点赞 打赏 评论
  • 狸猫花 2018-06-07 13:29

    在跨域的情况下,ajax 同步失效
    ajax是不能跨域的
    jsonp的实现不是ajax,而是script节点,所以对ajax有效的配置未必对jsonp有效

    点赞 打赏 评论

相关推荐 更多相似问题