getJSONP[name]

getJSONP[name]

getJSONP[name]我可不可以直接换成写cbname?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,JSONP跨域的原理就是通过script标签的src属性实现跨域请求。

代码中创建的script标签并设置src属性值为url,只是给script标签设置src属性,此时并没有发送请求。可以结合源码测试下,注释如下所示代码,并不会打印出数据,证明没有发送请求。

http://img1.sycdn.imooc.com//climg/5f2bcfb7090d435010440169.jpg

只有将script标签添加到页面中,才会真正的发送请求,所以需要使用append方法追加到页面中。

祝学习愉快~

  • Darkholme 提问者 #1
    那能这样理解这个script不?就是利用script的src属性访问了这个地址,然后就跟导入了一个Jquery一样的,你可以用这个网站的各种功能了,包括他上面的数据。所以就能get到数据了,解决了跨域的问题……
    2020-08-06 17:59:20
  • 好帮手慕慕子 回复 提问者 Darkholme #2
    同学你好,可以这么理解,祝学习愉快~
    2020-08-06 18:00:03
好帮手慕慕子 2020-08-06 17:30:59

同学你好, 对于你的问题解答如下:

  1. 应该是cbname = function(){},老师手误写错了,以后老师会更加仔细一点的

  2. 理解的有些误差,不可以换成cbname的原因是cbname是一个变量。

    如下所示,表示给变量赋值,此时的cbname的值为getJSONP.' + name

    http://img1.sycdn.imooc.com//climg/5f2bcb3209653d7306820068.jpg

    如果写成cbname = function(){}这种格式,相当于重新赋值为一个函数,此时cbname的值与之前的getJSONP.' + name没有任何关系,即:有一个名为cbname函数。可以结合下图注释理解

    http://img1.sycdn.imooc.com//climg/5f2bcc7a090d737f10310331.jpg

  3. 当属性名是变量时,js语法中规定需要使用中括号的形式获取属性值

    结合如下示例理解:有一个变量name只为age, 如果想要访问对象下age属性,可以查看两种方式的区别

    http://img1.sycdn.imooc.com//climg/5f2bcd74092085ec10410316.jpg

    结果:

    http://img1.sycdn.imooc.com//climg/5f2bcdb70905868506990265.jpg

祝学习愉快~

  • 提问者 Darkholme #1
    我明白透了,谢谢老师
    2020-08-06 17:55:45
好帮手慕慕子 2020-08-06 16:56:13

同学你好,不可以的。

因为cbname = function()() 表示重新给变量cbname赋值为一个函数,而getJSON[name] = function() {}表示定义一个名为getJSON.getJSONPbcb(假设随机数是bcb)的函数。所以不可以替换

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 Darkholme #1
    什么叫cbname=function()()??? 而且cbname等于getJSONP.+name啊。我觉得不可以换成cbname的原因是,因为cbname是getJSONP.getJSONPbcb。但是name是一个随机生成的变量,不能用.name,如果是用.name相当于这个name是被定义好的常量(不知道这里说的对不对,不对请老师帮忙讲解) 而变量应该用[name]来取(我也不知道为什么,请老师讲一下,我是听视频上这么说的。) 所以呀要用getJSONP[name]来当作函数名
    2020-08-06 17:14:45
  • 提问者 Darkholme #2
    还有个地方搞不懂,为啥要往head里append一个src是请求的url的一个script标签??这么做起了什么作用? 因为我看视频里已经用给请求的url后面加入了一个方法然后服务端返回的数据就会在这个方法里面,这个数据被data接受,然后用callback来使用这个data。这不就已经实现跨域请求到数据了吗。所以append那个script是干嘛用的?
    2020-08-06 17:24:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师