jquery ajax 404判断,jQuery Jsonp 请求,捕获异常(404,50X)状态异常

本文介绍了在实现前后端分离并使用CDN时,如何处理JSONP请求遇到的404问题。当资源不存在时,JSONP无法捕获错误。通过设置AJAX请求的`timeout`属性,可以在超时时捕获异常,避免直接使用`onerror`方法因兼容性问题带来的困扰。文章提供了具体的示例代码,并分享了解决此类问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我今天被国外的一个画板项目迷上了,我觉得 clone 一版本,并且为了快速的让大家稳定的使用,我利用   CDN   做前后端分离。

前后端分离示意图

d065bd127f11a91caed68555a69799eb.png

遇到的问题(Jsonp)404问题

发现   Jsonp   去请求   CDN  ,如果用户请求的资源是不存在的,那么?必须要告知用户,而   Jsonp   的原理是创建 script 标签,然后加载返回内容作为   JavaScript   脚本去执行,调用方法,达到获取返回值。

ajax代码:sojson = function (data) {

console.log("返回值",data)

}

$.ajax({

url:"//sojson.nimatool.com/sketch/11333111111.json",

dataType:"jsonp",

error:function (e) {

d = "error", alert("Uh-oh, an error occured while trying to load this sketch.")

}

});

返回值:sojson("294x223","297x230","299x235"]);

当返回值作为脚本去执行的时候,调用了上面的 sojson 方法。

但是当资源404的时候,或者报错的时候,也就是返回不成功的时候,  jsonp   是无法得到状态,也不会进 success,也不会进 error 方法。有人会说 script 的话,有 onerror 方法,但是这个方法有浏览器兼容问题。

最终解决Jsonp,异常捕获

其实有点投机取巧,就是采用 timeout 属性,因为当资源只要没有正确返回,就会计算在 timeout 时间消耗内。$.ajax({

url:"//sojson.nimatool.com/sketch/11333111111.json",

timeout:4000,//超过4秒没正确返回,就会进入 error

dataType:"jsonp",

error:function (e) {

d = "error", alert("Uh-oh, an error occured while trying to load this sketch.")

}

});

就这样就 OK 了。

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

¥我需要走的更远,点击我 赞助。

如果还有疑问,点击我加群,为你提供最好的解答。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值