Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不';t多个$.getJSON调用是否正常工作?_Javascript_Jquery_Ajax_Json_Getjson - Fatal编程技术网

Javascript 为什么不';t多个$.getJSON调用是否正常工作?

Javascript 为什么不';t多个$.getJSON调用是否正常工作?,javascript,jquery,ajax,json,getjson,Javascript,Jquery,Ajax,Json,Getjson,请查看此代码: $(document).ready(function() { var urls = ['http://en.wikipedia.org/w/api.php?action=query&titles=File:Einstein2.jpg&prop=imageinfo&iiprop=url&iiurlwidth=144&format=json&callback=?', 'http://en.wikipedia.org/w/

请查看此代码:

$(document).ready(function() {
        var urls = ['http://en.wikipedia.org/w/api.php?action=query&titles=File:Einstein2.jpg&prop=imageinfo&iiprop=url&iiurlwidth=144&format=json&callback=?', 'http://en.wikipedia.org/w/api.php?action=query&titles=File:Da_Vinci_Vitruve_Luc_Viatour.jpg&prop=imageinfo&iiprop=url&iiurlwidth=144&format=json&callback=?', 'http://en.wikipedia.org/w/api.php?action=query&titles=File:2003-32-GravitationalLens.jpg&prop=imageinfo&iiprop=url&iiurlwidth=144&format=json&callback=?'];
        var x = 0;
        var f = function() {
            x++;
            console.log(x);
        };
        $.getJSON(urls[0], function(json) { f(); } );
        $.getJSON(urls[1], function(json) { f(); } );
        $.getJSON(urls[2], function(json) { f(); } );
    });
这个代码的结果是“1”,而我期望的是“1 2 3”

我已经看到了这方面的解决方案(例如,在中)。但我仍然无法理解为什么给定的解决方案应该有效,而上面的代码不应该有效

添加: 当我在$.getJSON调用之间插入一些代码或将console.log()更改为alert()时,输出实际上是“1 2 3”。当这些方法完全在彼此之后调用时,in-Chrome输出变为“1”

添加:
奇怪的事。在完全不更改代码的情况下,通过重新加载页面,我得到了3个不同的输出“1”、“12”、“12 3”…

您的示例实际上是按照您的预期运行的。在Firefox和Chrome中,我在控制台输出中看到:

1
2
3

您可以尝试像这样嵌套查询

 $.getJSON(urls[0], function(json) { 

    f();

     $.getJSON(urls[1], function(json) { f();

      $.getJSON(urls[2], function(json) { f(); 
      } );

     } );

   } );

你期望得到什么结果?你得到了什么结果?定义“正确工作”谢谢注意,我编辑了这个问题。运行该代码的结果是1 2 3-。您似乎生成了一个简化的测试用例,将问题简化为零。昆汀是对的。。。结果是123。。。但是1不一定来自第一个$.getJSON。请参阅修改后的示例,我在Chrome中每次都会得到1 2 3,使用的是您代码的复制/粘贴:。这没什么区别,但你用的是什么浏览器?