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 29 Javascript
使用jQuery模板来展现json数据的代码
Oct 22 Javascript
20款效果非常棒的 jQuery 插件小结分享
Nov 18 Javascript
jquery设置元素的readonly和disabled的写法
Sep 22 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
Oct 11 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
May 16 Javascript
一个JavaScript递归实现反转数组字符串的实例
Oct 14 Javascript
jQuery事件绑定用法详解
Sep 08 Javascript
js实现鼠标拖拽多选功能示例
Aug 01 Javascript
深入理解vue中的slot与slot-scope
Apr 22 Javascript
基于PHP pthreads实现多线程代码实例
Jun 24 Javascript
Javascript中的解构赋值语法详解
Apr 02 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/10/04 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
Python爬虫代理IP池实现方法
2017/01/05 Python
python实现八大排序算法(2)
2017/09/14 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
python Pexpect模块的使用
2020/12/25 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
Delphi软件工程师试题
2013/01/29 面试题
技校毕业生的自我评价
2013/12/27 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
驾驶员岗位职责
2014/01/29 职场文书
三年级数学教学反思
2014/01/31 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
暑期培训班策划方案
2014/08/26 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python