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

Javascript Jquery将循环变量绑定到getJSON函数,javascript,jquery,Javascript,Jquery,我有一个for循环,它获取一个json数组并将其与另一个列表的变量一起填充到一个表中。我的问题是我无法访问get方法中的I。但我有我的清单和里面的所有内容。我尝试使用bind(this,I)将函数绑定到变量I,但这表明.getJSON()不是函数。这是相关代码 var mylist = ["a", "b", "c"] for (i = 0; i < mylist.length; i++) { urlstr = "/" + mylist[i]; // Generate url

我有一个for循环,它获取一个json数组并将其与另一个列表的变量一起填充到一个表中。我的问题是我无法访问get方法中的I。但我有我的清单和里面的所有内容。我尝试使用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
    });

}
var mylist=[“a”、“b”、“c”]
对于(i=0;i
简言之,我需要getJSON之外的变量在getJSON内可以访问。
有人能帮忙吗?感谢和问候。

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

例如:

$data['something'] = 'data';
echo json_encode($data);
并使用函数获取索引(i):


这与在实际上任何其他循环中绑定循环变量没有什么不同。因为您使用的是数组,所以最干净的方法是使用
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);
    });
});
var mylist=[“a”、“b”、“c”];
mylist.forEach(函数(项){
var urlstr=“/”+项;
$.getJSON(urlstr,函数(数据){
var html=”“+项目+“”+
data.string[0]+“”;
$(“#tableresult”).append(html);
控制台日志(项目);
});
});

您似乎有一些字符串边界问题。urlstr=“/”+mylist[i]。试试这个
i
being
3
的问题是您在项目上循环,调用getJSON,但在调用第一个回调之前,循环已经完成,导致每个回调的
i
为3。这很好,但假设我在getJSON和此函数之外还有一些变量,如何在内部访问它们?例如,在mylist旁边有另一个变量myvar=5。我怎样才能进入里面?@Tania你可以像平常一样使用它。只要在请求发生时它的值没有发生变化,就不应该是问题。它说myvar是未定义的@JLRishe@Tania你能告诉我你在哪里使用它吗?好的,你试过了:$.each(result,function(i,field){$(“div”).append(field+);});
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);
    });
});