跨域请求 数据返回却无法执行回调函数的原因之一

9 篇文章 0 订阅
4 篇文章 0 订阅

由于公司项目的问题,导致跨域的情况比较多。既要考虑安全性问题又要解决跨域。只能从中做一些取舍。

今天发现的问题是,前端已经获取了后台返回的CALLBACK函数,但是无论如何都不执行。这可把我急的,之前也写过一次跨域请求。现在调用同样写好的函数,却是一个能执行一个不能执行。多次比对发现返回的内容也没有错。最后发现原因是我把回调函数写在了

$(function(){
//我把跨域请求也写在了这个匿名函数中
function callback(res)//回调函数也写在匿名函数中
{

}

});

我将回调函数拿出来放在$(function(){})之外就能够执行了。那么为什么会出现这样的情况呢?
请先运行下面代码

$(function(){

    function test()
    {   
        console.log('在外面不可以调用已经准备好的函数');

    }

})
test();

上面的代码会提示出错。test()函数找不到,因为test()函数是匿名函数的内部成员方法,同样JSONP跨域请求也是如此,请求后返回的回调函数相当于上面的test();当你的test是定义在匿名函数内部。则无法访问。而且浏览器还不会提示你这个回调函数找不到。

出现这种低级错误的原因主要还是归咎于自己学得不精通,一般都会把所有函数写在匿名函数内部。学得越多越杂,思考的东西就越少,写了这么久我都没有意识到JS和其他后台语言不通。能够在方法里面定义方法。呵呵。。。要走的路还长着呢,现在我已经开始明确方向并往前端走了。JS方面的专业书籍还没有看过。有空得学精通。JS是一门很高端的语言。对的,高端。在我看来。

这个内部函数让我想起了闭包的内容。恩。下一篇就记录下闭包这个东西吧。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值