用jquery怎么封装JSONP呢?
这个是用原生js进行封装的吧,用jquery要怎么封装呢?我也想了解一下
视频老师在课前说还要用jquery封装一次,课全讲完了也没见到,麻烦老师帮忙写个用jquery封装的给我看看?
35
收起
正在回答 回答被采纳积分+1
5回答
好帮手慕星星
2020-09-24 18:14:55
同学你好,问题解答如下:
1、jsonp是约定好的,口头约定或者文档约定都可以,前端不可以修改。后端在写接口的时候就固定了,按照规定好的写就行。如果想更改,让后端去改。
2、$.ajax()中参数也是固定的,没有办法添加随机生成函数名,参考文档:
https://www.html.cn/jqapi-1.9/jQuery.ajax/
祝学习愉快!
好帮手慕星星
2020-09-24 13:55:03
同学你好,问题解答如下:
1、意思是想更换jsonp还是更换abc呢?
课程中给出的接口,后台规定是jsonp,所以不能更换;abc可以是随机的,老师第一次粘贴的图片中就是完整的示例
<script type="text/javascript">
function getJSONP(url) {
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'i', 'h', 'j'],
r1 = Math.floor(Math.random() * 10),
r2 = Math.floor(Math.random() * 10),
r3 = Math.floor(Math.random() * 10),
name = 'getJSONP' + a[r1] + a[r2] + a[r3],
cbname = 'getJSONP.' + name;
// 判断url地址中是否含有?号
if (url.indexOf('?') === -1) {
url += '?jsonp=' + cbname;
} else {
url += '&jsonp=' + cbname;
}
getJSONP[name] = function(data) {
try {
console.log(data)
} catch (e) {
//
}
}
// jquery中ajax使用方式
$.ajax({
url: url,
type: "GET",
// 类型是jsonp
dataType: "jsonp"
})
}
getJSONP('http://class.imooc.com/api/jsonp');
</script>2、jQuery跨域和原生js跨域是两种不同的方式,所以不需要删除script标签和函数。随机函数名参数上面示例。
祝学习愉快~
好帮手慕星星
2020-09-24 11:50:38
同学你好,例子如下:
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
function getJSONP(url) {
// jquery中ajax使用方式
$.ajax({
url: url,
type: "GET",
// 类型是jsonp
dataType: "jsonp",
// 回调函数是abc
jsonpCallback: "abc",
success: function(data) {
console.log(data)
}
})
}
getJSONP('http://class.imooc.com/api/jsonp?jsonp=abc');
</script>结果:

自己测试下,祝学习愉快!
组件化思想开发电商网页 18版
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星