跨域请求 数据返回却无法执行回调函数的原因之一
来源:互联网 发布:php扩展库有哪些 编辑:程序博客网 时间:2024/06/06 05:39
由于公司项目的问题,导致跨域的情况比较多。既要考虑安全性问题又要解决跨域。只能从中做一些取舍。
今天发现的问题是,前端已经获取了后台返回的CALLBACK函数,但是无论如何都不执行。这可把我急的,之前也写过一次跨域请求。现在调用同样写好的函数,却是一个能执行一个不能执行。多次比对发现返回的内容也没有错。最后发现原因是我把回调函数写在了
$(function(){//我把跨域请求也写在了这个匿名函数中function callback(res)//回调函数也写在匿名函数中{}});
我将回调函数拿出来放在$(function(){})之外就能够执行了。那么为什么会出现这样的情况呢?
请先运行下面代码
$(function(){ function test() { console.log('在外面不可以调用已经准备好的函数'); }})test();
上面的代码会提示出错。test()函数找不到,因为test()函数是匿名函数的内部成员方法,同样JSONP跨域请求也是如此,请求后返回的回调函数相当于上面的test();当你的test是定义在匿名函数内部。则无法访问。而且浏览器还不会提示你这个回调函数找不到。
出现这种低级错误的原因主要还是归咎于自己学得不精通,一般都会把所有函数写在匿名函数内部。学得越多越杂,思考的东西就越少,写了这么久我都没有意识到JS和其他后台语言不通。能够在方法里面定义方法。呵呵。。。要走的路还长着呢,现在我已经开始明确方向并往前端走了。JS方面的专业书籍还没有看过。有空得学精通。JS是一门很高端的语言。对的,高端。在我看来。
这个内部函数让我想起了闭包的内容。恩。下一篇就记录下闭包这个东西吧。
1 0
- 跨域请求 数据返回却无法执行回调函数的原因之一
- ajax异步请求不执行回调函数的bug原因之一
- 关于jquery ajax请求发了,返回值也有,但是却无法进去ajax的success回调函数
- ajax请求,返回的数据不看不到,回调函数没有执行
- 解决:Stusts2+JQuery+JSON回调函数无法执行问题原因之一~
- Ajax 回调函数不执行原因之一
- jquery ajax请求成功,返回了数据,但是不进success回调函数的问题
- 关于ajax请求返回json数据不进入回调函数的可能情况
- JSon不能执行回调函数的原因
- ajax+struts2不执行回调函数的原因解析
- 跨域请求jsonp格式的数据 回调函数的使用
- ajax回调函数无法执行
- $.post 回调函数无法执行
- mongoose无法执行回调函数解决办法
- SpringMVC中使用ajax请求controller后无法执行success回调函数
- jquery回调函数接受服务器端返回的数据
- jQuery1.4+版本 ajax 不执行success回调函数,却进入error回调函数
- JSONP:(发js请求)请求script,返回回调函数
- IntelliJ IDEA :Error:(1, 1) java: 非法字符: '\ufeff'
- 选择排序
- day35_hibernate懒加载&抓取策略&常见错误分析
- oracle第一天
- 题目1044:Pre-Post
- 跨域请求 数据返回却无法执行回调函数的原因之一
- Android Studio导入library(第三方库)或者demo的方法
- 人工智能会不会取代开发它的人?
- 使用inflate获取XML布局文件
- pandas 时间序列分析(一)—— 基础
- Mysql创建表实现主键自增并且初始值为1000
- java就近原则小代码
- Spring HibernateTemplate properties文件错误
- rest、注解、spring与struts