$getJSON and for loop issue

后端 未结 4 1855
野性不改
野性不改 2020-12-01 10:01

This is to populate a table with the amount of results that are returned from the MediaWiki API query /api.php?action=query&list=querypage&qppage=BrokenRedirec

4条回答
  •  攒了一身酷
    2020-12-01 10:34

    That's a classical problem : i has the value of end of loop when the callback is called.

    You can fix it like this :

    for (var i = 0; i < array.length; i++) {
        (function(i) { // protects i in an immediately called function
          $.getJSON('/api.php?action=query&list=querypage&qppage=' + array[i] + '&format=json', function (data) {
            $('#' + array[i]).text(data.query.querypage.results.length);
          });
        })(i);
    }
    

    2018 addendum:

    There's now another cleaner solution in today's browsers: use let instead of var:

    for (let i = 0; i < array.length; i++) {
        $.getJSON('/api.php?action=query&list=querypage&qppage=' + array[i] + '&format=json', function (data) {
            $('#' + array[i]).text(data.query.querypage.results.length);
        });
    }
    

提交回复
热议问题