现在网上的应用越来越多,少不了要用到客户端Javascript。说到这个JavaScript,我可得说说咱们最爱的jQuery了。这是个超级实用的工具包,操作起来又快又方便,很多浏览器都支持。jQuery不光可以轻而易举地搞定HTML文档,让你省心不少,还能用AJAX提升网站的用户体验。有的时候,你可能还是需要依赖同步请求?别急,Wilco早就给出了解决方案——fetch同步请求。接下来就让我告诉你怎么用jQuery的fetch同步请求,以及这里头的基础知识,遇到问题也不用怕,我都会给你解答的,记得认真学
fetch同步请求基础语法
如果我们要用jQuery做同步请求的话,记得要加async: false这个参数,这样在服务器回复之前,浏览器会乖乖等待的。打个比方说,我们想发起同步GET请求,这样做就对了:
javascript $.ajax({ url:'example.com/data', type:'GET',$.ajax({ url:"http://localhost:8080/api/data", dataType:"json", async:false, success: function(data) { console.log(data); } });async: false,
success: function(data){$.ajax({ url: 'example.json', async: false, dataType: 'json', success: (data) => console.log(data) });console.log(data);
}
});再来看一下fetch同步请求的基本语法:
fetch同步请求常见问题和解决方法
1. fetch同步请求可能会导致程序阻塞
要是服务器反应迟钝,那你的fetch方法很可能让整个脚本傻等!这不是开玩笑,网页上的其他小动作可得等收到回复后才敢乱来。还有更悲剧的情况就是,中途可能会卡壳,一直悬着直到超时或者服务器响应之后才能恢复正常。
解决办法超简单:切换成异步请求或把打包请求拆开做。
$.ajax({ url: 'example.json', async: false, dataType: 'json', credentials: 'include', success: (data) => console.log(data) });2. fetch同步请求不能同步发送cookies
呐,了解下,Fetch取数据时是无需带Cookie哒,这个和咱平时编程有些不同如果要用到Cookie,得把Credentials里面的值设为’tinclude’噢。
3. fetch同步请求可能会遇到跨域问题
这个规则就是同款浏览器中的fetch请求如果相同就可能发送失败或者被阻止了。
解决方法,分两步走就行了:首先,给JSON加个padding;其次,搞台代理服务器,这样跨域问题也就迎刃而解喽!
4. fetch同步请求不支持所有HTTP方法
别忘了 Fetch只支援 GET 和 POST !要换别的 HTTP 方法?那就得用些花招,做点异步处理。
5. fetch同步请求会阻断页面生命周期事件
网页可不容易进去~后台同步引起“拜拜”事件受阻时,网页得等着反应回来才能动弹儿,你说要花多久?这可真不是小事儿,咱这用户们别不当回事儿呀。
解决方案:避免在页面生命周期事件中使用fetch同步请求。
虽然同步请求好用,但有时候还是难免有些小麻烦。网站要好用,主要顺畅,少点岔子,所以尽量别搞异步请求那套!
原文链接:https://www.icz.com/technicalinformation/web/2024/04/14249.html,转载请注明出处~~~
评论0