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 判断函数类型完美解决方案
Sep 02 Javascript
关于js注册事件的常用方法
Apr 03 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
Dec 11 Javascript
js实现select跳转功能代码
Oct 22 Javascript
jquery获取多个checkbox的值异步提交给php
Jul 07 Javascript
详解Bootstrap创建表单的三种格式(一)
Jan 04 Javascript
Easyui form combobox省市区三级联动
Jan 13 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
详解webpack性能优化——DLL
Oct 20 Javascript
浅谈ES6 模板字符串的具体使用方法
Nov 07 Javascript
Vue入门之animate过渡动画效果
Apr 08 Javascript
js 函数性能比较方法
Aug 24 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
php制作动态随机验证码
2015/02/12 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
在Docker上开始部署Python应用的教程
2015/04/17 Python
Python实现删除文件但保留指定文件
2015/06/21 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
python去掉空白行的多种实现代码
2018/03/19 Python
Python实现图片识别加翻译功能
2019/12/26 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
详解python程序中的多任务
2020/09/16 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
硕士研究生个人求职信
2013/12/04 职场文书
抗洪抢险事迹材料
2014/05/06 职场文书
鼋头渚导游词
2015/02/05 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android