Jquery Ajax异步详解
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《jQuery Ajax异步请求详解》, 一起来围观吧 https://blog.csdn.net/weixin_37994110/article/details/87892678?utm_source=app
解释一下为什么福斯特成绩管理系统里,在显示教师信息按钮里写for循环,for循环未加载完之前,其他按钮都点不了。
当执行异步加载时,前台如果发送了两个请求,后台会同时执行两个请求,然后哪个请求先获取数据,则先返回给前台,然后先执行对应的前台代码。前台代码是单线程的,所以是按顺序运行【js代码都属于前台代码】。
因为当点击教师信息按钮时,由于后台数据较少,所以前台点击事件很快就获取到了数据并开始执行js前台代码。由于js代码是单线程的,所以要按顺序执行。所以,js里的for循环运行结束之前,是不能对页面的其他元素进行操作的。但如果教师查询请求(a)响应需要一段时间的话,那么在这段时间里,就可以操作其他按钮,发送其他请求(b),此时后台就会同时运行这个请求,如果b请求运行完毕,返回数据到前台时,a请求还没有响应完毕,那么就要等到b请求执行完毕后,(即使期间a请求响应完毕,也要在任务队列先挂起,等待前台其他行为执行完毕,再执行请求a对应的前台代码),再执行a请求对应的前台代码。
代码如下:
$.ajax({
url: "post.php",
type: "post",
data: { // 传输的数据,如果是get请求将会被转为URL中的请求参数
id:1
},
dataType: json // 我们期待返回的数据类型
})
.done(function(json){}) // 请求成功的回调
.fail(function(xhr,status,errorThrown){}) // 请求失败的回调
.always(function(xhr,status){}) // 不论成功或者失败都会被调用

浙公网安备 33010602011771号