我觉得我错过了一些简单的东西。请帮忙!我第一次使用这部分jQuery ....
这是我的代码。如何遍历do_it
返回的每个元素?
function do_it(a){
return $.getJSON('url', {mode: 'get_array', id: a}); // returns JSON object
};
$.when.apply(do_it[1,2,3]).then (function(data){
// how to get each element returned by do_it() here?
}, function () {console.log('Failed');<br>});
答案 0 :(得分:0)
$.getJSON
会返回一个承诺对象:http://api.jquery.com/jquery.getjson/
有了它,您可以分别附加done
,fail
和always
函数。然后,您可以将代码格式化为。
function do_it (id) {
return $.getJSON(url, {
mode: 'get_array',
id: id
});
}
do_it([1, 2, 3]).done(function (data) {
for (var key in data) {
console.log(key, " = ", data[key]);
}
}).fail(function () {
console.log("Failed");
});
我不确定你想要传递给do_it
的是什么,如果它是数组,或者每个id
分开,如果是后者,你可以这样做:
$.each([1, 2, 3], function (id) {
do_it(id) // same stuff as above
修改:根据您的评论,这是一个建议,虽然不是最佳表现。
var data = [];
$.when.apply($.map([1,2,3], function (id) {
return do_it(id).done(function (d) {
data.push(d[0]);
});
}).done(function () {
for (var d in data) {
console.log(d);
}
}).fail(function() {
console.log("Failed");
});
答案 1 :(得分:0)
在此示例中,我修复了数据中的任何错误,并使用deferred
对象复制程序的功能。
data
是一个包含许多对象的数组。代码循环遍历数组对象,并从每个对象中选取值以添加到表中。请注意,我倾向于使用array.join()
而不是字符串连接来构建HTML - YMMV。
$.when(do_it()).then(function (data) {
var html = [];
html.push('<table>');
for (var i = 0, l = data.length; i < l; i++) {
var row = [];
row.push('<tr>');
row.push('<td>' + data[i].ID + '</td>');
row.push('<td>' + data[i].L_Name + '</td>');
row.push('<td>' + data[i].F_Name + '</td>');
row.push('<td>' + data[i].Email + '</td>');
row.push('<td>' + data[i].Department + '</td>');
row.push('</tr>');
html.push(row.join(''));
}
html.push('</table>');
});
我希望你对它有用。
答案 2 :(得分:-1)
假设返回的值是一个数组:
$.when.apply(do_it[1,2,3]).then(function(data){
$(JSON.parse.(data)).each(function(index, element){
//do stuff
});
}, function () {console.log('Failed');<br>});
编辑:
从您的评论中,我们假设:
var data = '[{"ID":1,"L_Name":"Jones","F_Name":"Jan","Email":"jjones@email.com","Telephone_No":"xxx.xxx.xxxx","Institution":"IT","Department":"3","Notes":"","Secretary":0},{"ID":3,"L_Name":"Smith","F_Name":"Christopher","Email":"email@gmail.com","Telephone_No":"","Institution":"IT","Department":"18","Notes":"","Secretary":0},{"ID":4,"L_Name":"White","F_Name":"Amanda","Email":"white@email.com","Telephone_No":"","Institution":"UT","Department":"25","Notes":"","Secretary":0}]';
注意我添加了数组的开始和结束括号[...]以及元素之间的逗号。
然后循环遍历数组:
var json = JSON.parse(data);
$(json).each(function(index,element){
//do stuff
alert("index: " + index + " element: " + element );
});