我有一个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之外的变量。 有人可以帮忙吗?谢谢和问候。
答案 0 :(得分:2)
这与在几乎任何其他循环中绑定循环变量没有什么不同。由于您正在使用数组,因此最干净的方法是使用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);
});
});
答案 1 :(得分:1)
请确保您的php返回数据是json。
例如:
$data['something'] = 'data';
echo json_encode($data);
并使用get index(i)函数:
$.getJSON("demo_ajax_json.js", function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
});
});