jquery ajax中使用jsonp的限制解决方法


Posted in Javascript onNovember 22, 2013

jsonp 解决的是跨域 ajax 调用的问题。为什么要跨域 ajax 调用呢?这样可以在一个应用中直接在前端通过 js 调用另外一个应用(在不同的域名下)的 API。
我们在实际应用中也用到了 jsonp ,但之前只知道 jsonp 的一个限制,只能发 get 请求,get 请求的弊端是请求长度有限制。
今天,发现 jsonp 的另外一个限制(在jquery ajax的场景下) —— 不会触发 $.ajax 的error callback,示例代码如下:

$.ajax({
    dataType: 'jsonp',            
    error: function (xhr) {
        //出错时不会执行这个回调函数
    }
});

这个限制由 jsonp 的实现机制决定。

解决方法:

使用一个 jquery 插件 —— jquery-jsonp,https://github.com/jaubourg/jquery-jsonp

示例代码:

<script src="https://raw.github.com/jaubourg/jquery-jsonp/master/src/jquery.jsonp.js"></script>
$.jsonp({
    url: '',
    success: function (data) {
    },
    error: function (xOptions, textStatus) {
        console.log(textStatus);
    }
});

当 jsonp 请求出错时,比如 404 错误,error 回调函数会执行,输出字符串"error"。

Javascript 相关文章推荐
javascript 写类方式之三
Jul 05 Javascript
js打开windows上的可执行文件示例
May 27 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
Jun 15 Javascript
jquery获取多个checkbox的值异步提交给php
Jul 07 Javascript
jQuery控制frames及frame页面JS的方法
Mar 08 Javascript
Easyui 之 Treegrid 笔记
Apr 29 Javascript
jQuery动画_动力节点节点Java学院整理
Jul 04 jQuery
Vue组件通信实践记录(推荐)
Aug 15 Javascript
JS原型继承四步曲及原型继承图一览
Nov 28 Javascript
你或许不知道的一些npm实用技巧
Jul 04 Javascript
基于JS实现父组件的请求服务过程解析
Oct 14 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 Javascript
javascript禁用Tab键脚本实例
Nov 22 #Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
Nov 22 #Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
Nov 22 #Javascript
javascript删除option选项的多种方法总结
Nov 22 #Javascript
js截取固定长度的中英文字符的简单实例
Nov 22 #Javascript
String.prototype实现的一些javascript函数介绍
Nov 22 #Javascript
nodeType属性返回被选节点的节点类型介绍
Nov 22 #Javascript
You might like
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Flask数据库迁移简单介绍
2017/10/24 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python编程中类与类的关系详解
2019/08/08 Python
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
生产部经理岗位职责
2013/12/16 职场文书
优秀部门获奖感言
2014/02/14 职场文书
实践单位评语
2014/04/26 职场文书
网络优化专员求职信
2014/05/04 职场文书
旷课检讨书
2015/01/26 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
用python修改excel表某一列内容的操作方法
2021/06/11 Python