Jquery跨域获取JSON回调函数最后才执行
在使用Jquery跨域获取JSON时出现一个非常奇怪的问题,一直解决不了:
1.首先用getJSON跨域获取JSON数据,回调函数执行也正常 2.然后把JSON中的某个以空格分隔的数据变成数组 3.对该数组执行循环,在循环中,用getJSON再跨域获取另一个JSON,然后执行一些动作
以上执行到第三步时,在跨域获取另一个JSON处卡壳了,断点跟踪发现,此处回调函数不执行,一直执行到最后一次循环时,这个回调函数才执行,而且会执行多次,执行次数为循环次数,而且是把之前每次循环时传给他的值依次执行。
也就是说,本应该是循环一次,执行一次getJSON,结果变成了循环结束,然后getJSON才用之前每次循环传给的值循环执行
这是怎么回事?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
因为你没有完整的代码,我通过描述猜测你可能是遇到了页面中使用Jquery重复JsonP的问题,你可以参考stackoverflow这个questions
parallel-jsonp-requests-in-jquery-do-not-trigger-multiple-callback-events
循环中getJSON是用的异步吧,改成同步的应该就能解决问题。
js 是单线程的,
getJSON
是异步的,故虽然这个过程是在循环里,但返回结果时需要等待 js 引擎空闲后才会去执行,且多个循环发出的请求无法保证顺序