大致像这样
$.getJSON("jsonpath", {}, function (data) {
jsondata = data;
}, "json");
接着调用这个 jsondata 对象时有一定几率会报错
Uncaught ReferenceError : data is not defined
然而并不是每次都报错,十分神奇。在 console 里面查看 jsondata 的内容时是正确加载进去了。
P.S 原来 js 里用的 jQuery 调用与原生 js 调用混合,后来我把原生调用改写成了 jQuery 调用后不报错了,然而还是有加载失败的现象,直接后果就是要加载到 table 里的数据无法加载, table 空白。
js 文件: github.com/DiruSec/PSO2-EQ-Schedule/blob/master/script/parser.js
应用地址: time.dirusec.com
P.S 2 基本没学过 js ,写起来一泡污,求轻喷(´・ω・`)
1
lxf1992521 2017-04-12 22:47:14 +08:00
一般 get 方法出错基本上都是因为 cache 的原因,试试 $.ajaxSetup({cache:false})
|
2
iot 2017-04-12 22:48:43 +08:00
$.getJSON("jsonpath", callback);
获取到数据之后, callback 才会执行。 你那样写, callback 还没执行呢,你下面的代码就想用获取到的数据,肯定报错咯 |
3
alex321 2017-04-12 22:59:43 +08:00 via Android
data 的输出格式看下,可能是字符串了。前端保险一些用 JSON.paser 一下。
|
4
KirbySD OP @lxf1992521 感觉有缓解(心理作用?),不过还是有这种现象
@iot 看了一下文档,好像 function 部分是获取到数据后才会执行……? @alex321 console 里看了一下,输出是 Object 没错…… 这个问题不是每次都出现,而是每次刷新时有几率出现,目前的想法可能是 json 没完全读取就继续执行下面的代码了…但是在 console 里调用对象的话确实是正确加载了 |
5
1010011010 2017-04-13 02:35:49 +08:00
请求完成才会执行 callback 。
出错时查看 network 看看返回是不是正确的 json 。 |
6
duan602728596 2017-04-13 09:01:58 +08:00 via iPhone
js 的 ajax 是异步的。 Promise 大法好
|
7
dtysky 2017-04-13 09:28:41 +08:00
。。。 LZ 还是先学一下 WEB 前端开发基础再写代码吧
异步和同步这个坑刚入门的时候我也踩过 你需要见识一下回调地狱 2333 然后转 Promise |
8
way 2017-04-13 10:27:50 +08:00
Promise 大法好
|
9
MinonHeart 2017-04-13 11:54:01 +08:00
用 $.when
|