欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jquery ajax中使用jsonp的限制解决方法

程序员文章站 2022-06-05 09:15:24
jsonp 解决的是跨域 ajax 调用的问题。为什么要跨域 ajax 调用呢?这样可以在一个应用中直接在前端通过 js 调用另外一个应用(在不同的域名下)的 api。 我们在实...

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"。