Jquery将循环变量绑定到getJSON函数

Jquery binding loop variable to getJSON function

本文关键字:getJSON 函数 绑定 变量 循环 Jquery      更新时间:2023-09-26

我有一个for循环,它获取一个json数组,并将其与另一个列表的变量一起填充到表中。我的问题是我无法访问get方法中的I。但我有mylist和里面的所有内容。我尝试使用bind(this,I)将函数绑定到变量I,但这表明.getJSON()不是函数。这是相关代码。

var mylist = ["a", "b", "c"]
for (i = 0; i < mylist.length; i++) {
    urlstr = "/" + mylist[i]; // Generate url
    $.getJSON(urlstr, function(data) {
        html = "<tr><td>" + mylist[i] + "</td><td>" + data.string[0] + "</td></tr>";
        $("#tableresult").append(html); //this returns undefined for mylist[i]
        console.log(i); //this returns 3 which is the length of list
    });
}

简而言之,我需要在getJSON中访问getJSON之外的变量。有人能帮忙吗?谢谢和问候。

这应该与在实际上任何其他循环中绑定循环变量没有什么不同。由于您使用的是数组,因此最干净的方法是使用Array#forEach:

var mylist = ["a", "b", "c"];
mylist.forEach(function (item) {
    var urlstr = "/" + item;
    $.getJSON(urlstr, function(data){
         var html = "<tr><td>" + item + "</td><td>" + 
                    data.string[0] + "</td></tr>";
         $("#tableresult").append(html);
        console.log(item);
    });
});

请确保您的php返回数据是json。

例如:

$data['something'] = 'data';
echo json_encode($data);

并使用函数获取索引(i):

 $.getJSON("demo_ajax_json.js", function(result){
        $.each(result, function(i, field){
            $("div").append(field + " ");
        });
    });