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数组插入一条记录的代码
Aug 30 Javascript
JavaScript 数组循环引起的思考
Jan 01 Javascript
Chrome Form多次提交表单问题的解决方法
May 09 Javascript
jquery弹出关闭遮罩层实例
Aug 06 Javascript
js实现同一页面多个不同运动效果的方法
Apr 10 Javascript
javascript格式化json显示实例分析
Apr 21 Javascript
javascript基础知识
Jun 07 Javascript
js鼠标跟随运动效果
Mar 11 Javascript
Mac系统下Webstorm快捷键整理大全
May 28 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
May 28 Javascript
13 个npm 快速开发技巧(推荐)
Jul 04 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中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
django的登录注册系统的示例代码
2018/05/14 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
泰国网上购物:Shopee泰国
2018/09/14 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
护理专业推荐信
2013/11/07 职场文书
项目建议书范文
2014/05/12 职场文书
社区反邪教工作方案
2014/06/16 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
升学宴家长答谢词
2015/09/29 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS