找回密码
 立即注册
上面的代码,会先弹alert("第2个alert!");再弹alert("第1个alert,这是ajax异步请求!"); js不是按代码顺序由上到下执行的吗?而我原意也是想先弹第1个alert,再弹第2个alert。

免责声明:本文内容部分来源于网络,出于网络分享目的,如对您的权益版权有异议我们将予以删除,谢谢合作!
分享至 : QQ空间
收藏

2 个回复

倒序浏览
ajax默认都是异步请求的。

首页得理解同步请求跟异步请求两者间的区别
同步请求:提交请求->等待服务器处理->处理完毕返回, 同步请求将锁住浏览器, js语句按代码顺序由上到下执行,上面的语句没执行完,下面的语句是无法运行的!

异步请求: 请求通过事件触发->服务器处理(不会阻塞主线程,而会建立一个新的线程来操作,这时浏览器同时可以处理其它事情)->处理完毕  js语句不再按代码先后顺序由上到下执行,ajax请求执行的会同时执行ajax语句后面的js命令。

这就很好理解为什么上面代码运行结果是“先弹alert("第2个alert!");再弹alert("第1个alert,这是ajax异步请求!")”
回复 使用道具 举报
又想用ajax,又想先弹第1个alert,再弹第2个alert,有2种方法

方法1:
将ajax后面的js语句提到ajax的回调函数中执行,代码如下:如上代码加粗部分所示!如果使用$.ajax()方法,可使用下列形式使用success回调函数

  • $.ajax({
  • success:function(){
  • alert("第2个alert!");
  • }})
方法2:
弃用$.load(),改用$.ajax(),方便将ajax请求设置成同步请求,具体代码如下:解决问题的关键,得知道同步请求、异步请求两者间的区别!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册