老师,麻烦看看
来源:3-3 跨域封装(2)
qq_Mr郭生_0
2020-06-17 15:03:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ajax</title>
<link rel="stylesheet" type="text/css" href="../testproject/css/style.css">
</head>
<body>
<div class="banner" id="banner"><a href=""></a></div>
<div class="banner" id="banner_jq"></div>
<div>
<img src="http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png">
</div>
<script type="text/javascript" src="js/jquery-3.5.1.js"></script>
<script type="text/javascript">
//封装JSONP
function getJSONP(url,callback){
if(!url){
return;
}
//声明数组用来随机生成函数名
var a=['a','b','c','d','e','f','g','i','h','jb'],
r1=Math.floor(Math.random()*10), //Math.floor是取整
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;
}
//动态创建script标签
var script=document.createElement('script');
//定义被脚本执行的回调函数
getJSONP[name]=function(data){
try{
callback &&callback(data)
}catch(e){
}finally{
//最后删除该函数及script标签
delete getJSONP[name];
script.parentNode.removeChild(script)
}
}
//定义script的src
script.src=url;
document.getElementsByTagName("head")[0].appendChild(script);
}
getJSONP("http://class.imooc.com/api/jsonp",function(data){
console.log(data)
});
</script>
</body>
</html>
这里还有点疑问,当给getJSONP传入url,并且url也拼接'?jsonp='+cbname后,代码里面的哪一部分触发传送这个拼接后的url到服务器,麻烦老师详细讲讲
2回答
同学你好,这一部分触发执行

当前跨域就是通过script实现的,这个标签本身可以实现跨域。所以当给script标签添加上url地址,追加到页面的时候就可以触发传送。
祝学习愉快!
好帮手慕星星
2020-06-17
同学你好,理解的没有问题,很棒!
祝学习愉快!
相似问题