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 相关文章推荐
利用js跨页面保存变量做菜单的方法
Jan 17 Javascript
javascript学习笔记(一) 在html中使用javascript
Jun 18 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
Feb 24 Javascript
jquery中map函数与each函数的区别实例介绍
Jun 23 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 Javascript
Knockoutjs 学习系列(二)花式捆绑
Jun 07 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
Sep 17 Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 Javascript
JavaScript下拉菜单功能实例代码
Mar 01 Javascript
JavaScript设计模式之构造函数模式实例教程
Jul 02 Javascript
简单了解JavaScript中常见的反模式
Jun 21 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 随机排序广告的实现代码
2011/05/09 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
Python微信库:itchat的用法详解
2017/08/14 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
python调用API实现智能回复机器人
2018/04/10 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
医学生求职自荐信
2013/10/25 职场文书
技校学生个人职业生涯规划范文
2014/03/03 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
获奖感言怎么写
2015/07/31 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
python区块链持久化和命令行接口实现简版
2022/05/25 Python
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL