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实现)MapBar中坐标的加密和解密的脚本
May 16 Javascript
js Flash插入函数免激活代码
Mar 31 Javascript
关于html+ashx开发中几个问题的解决方法
Jul 18 Javascript
原生javascript实现拖动元素示例代码
Sep 01 Javascript
Javascript快速排序算法详解
Dec 03 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 Javascript
JQuery悬停控制图片轮播——代码简单
Aug 05 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
Jul 10 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
Jan 08 Javascript
node.js文件上传重命名以及移动位置的示例代码
Jan 19 Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
Jun 10 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
一些常用的php函数
2006/12/06 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
完美解决AJAX跨域问题
2013/11/01 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
React简单介绍
2017/05/24 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
js的对象与函数详解
2019/01/21 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
python Django批量导入数据
2016/03/25 Python
python机器学习之决策树分类详解
2017/12/20 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
解决python报错MemoryError的问题
2018/06/26 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
注塑工厂厂长岗位职责
2013/12/02 职场文书
会计实习生自我鉴定
2013/12/12 职场文书
2014全国两会心得体会
2014/03/17 职场文书
岗位说明书范文
2014/05/07 职场文书
新农村建设汇报材料
2014/08/15 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers
MySQL Server 层四个日志
2022/03/31 MySQL