search

Home  >  Q&A  >  body text

javascript - Jquery跨域获取JSON回调函数最后才执行

在使用Jquery跨域获取JSON时出现一个非常奇怪的问题,一直解决不了:

1.首先用getJSON跨域获取JSON数据,回调函数执行也正常 2.然后把JSON中的某个以空格分隔的数据变成数组 3.对该数组执行循环,在循环中,用getJSON再跨域获取另一个JSON,然后执行一些动作

以上执行到第三步时,在跨域获取另一个JSON处卡壳了,断点跟踪发现,此处回调函数不执行,一直执行到最后一次循环时,这个回调函数才执行,而且会执行多次,执行次数为循环次数,而且是把之前每次循环时传给他的值依次执行。

也就是说,本应该是循环一次,执行一次getJSON,结果变成了循环结束,然后getJSON才用之前每次循环传给的值循环执行

这是怎么回事?

ringa_leeringa_lee2818 days ago533

reply all(3)I'll reply

  • 大家讲道理

    大家讲道理2017-04-10 12:47:57

    因为你没有完整的代码,我通过描述猜测你可能是遇到了页面中使用Jquery重复JsonP的问题,你可以参考stackoverflow这个questions

    parallel-jsonp-requests-in-jquery-do-not-trigger-multiple-callback-events

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 12:47:57

    循环中getJSON是用的异步吧,改成同步的应该就能解决问题。

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 12:47:57

    js 是单线程的,getJSON 是异步的,故虽然这个过程是在循环里,但返回结果时需要等待 js 引擎空闲后才会去执行,且多个循环发出的请求无法保证顺序

    reply
    0
  • Cancelreply