其实写过jsonp相关api或者了解jsonp原理的同学其实都知道其实作为跨域的一种比较好的方式,其实还是有很多“缺陷”的。

 

 比如:

 

  • 无法使用POST进行提交
  • 异常处理

其实当然很多人也了解过 script标签部分支持onerror事件



兼容性相关



  • IE9|10  FF Safari  Chrome   支持
  • IE6-8 Opera  不支持



关于 如何判断浏览器是否支持script的onerror,可以查看司徒正美的 







同样很多人和我一样会问,那我们想做到兼容基本所有浏览器的异常处理咋办呢?





 --------  先介绍一下从司徒那边看到的一个方案:





JSONP的 回调函数总是在script的onload事件(IE的onreadystatechange)之前就被调用,因此在回调执行之时,为script标签增加一个属性,然后等到onload发生的时候,检查有没有这个属性,来以此判定是否请求成功