这一行
$.each(data[0].hotel_id, function (index, value) {
循环执行hotel_id
数组,将字典设置索引中每个条目的内部JS代码执行到字典中的键,并为内容赋值。
我的字典:
"hotel_id": [{
"hotel_id": ["1"]
}, {
"hotel_id": ["2"]
}, {
"hotel_id": ["3"]
}, {
"hotel_id": ["4"]
}],
所有项目都具有相同的索引,因此索引的值将始终为'hotel_id',当我尝试使用它来查找其他词典中的相关额外数据时,这对我没用。
我会在第一个循环之前初始化一个计数器,并在每次迭代时递增它,然后使用该值从其他数组中查找相关的额外数据。
查看完整的我的js代码:http://pastebin.com/jBWEDZrN
这是我在ajax调用中的js代码(url: 'get_gr',
)的摘要:
$.each(data[0].hotel_id, function (index, value) {
var $li = $('<li><input name="hotel_id[]" value="' + value.hotel_id + '" style="display:none;"></li>');
var $tooltip = $('<div class="tooltip"></div>').appendTo($li);
$li.appendTo('#residence_name');
var info_ru = data[0].residence_u[index];
$.each(info_ru.units, function (index, value) {
$tooltip.append(value + ' & ' + info_ru.extra[index] + ' & ' + info_ru.price[index] + '<br>');
});
var info_rp = data[0].residence_p[index];
$.each(info_rp.start_date, function (index, value) {
$tooltip.append(value + ' & ' + info_rp.end_date[index] + ' & ' + info_rp.price_change[index] + '<br>');
});
tool_tip()
});
这是输出php代码(url: 'get_gr',
):
[{
"guide": null,
"hotel_id": [{
"hotel_id": ["1"]
}, {
"hotel_id": ["2"]
}, {
"hotel_id": ["3"]
}, {
"hotel_id": ["4"]
}],
"residence_u": [{
"units": ["hello", "how", "what"],
"extra": ["11", "22", "33"],
"price": ["1,111,111", "2,222,222", "3,333,333"]
}, {
"units": ["fine"],
"extra": ["44"],
"price": ["4,444,444"]
}, {
"units": ["thanks", "good"],
"extra": ["55", "66"],
"price": ["5,555,555", "6,666,666"]
}],
"residence_p": [{
"start_date": ["1111", "2222"],
"end_date": ["1111", "2222"],
"price_change": ["1111", "2222"]
}, {
"start_date": ["3333", "444"],
"end_date": ["3333", "4444"],
"price_change": ["3333", "4444"]
}, {
"start_date": ["5555", "6666"],
"end_date": ["5555", "6666"],
"price_change": ["5555", "6666"]
}]
}]
我该怎么办?
更新:(此更新适用于上面的输出php)
我在数据库表的一行中插入了几个(array
)值和json_encode
的值,现在希望用jquery将它们作为顺序回显。
输出js代码是这样的:
1
hello
&amp;11
&amp;1,111,111
how
&amp;22
&amp;2,222,222
what
&amp;33
&安培;3,333,333,
1111
&amp;1111
&amp;1111
2222
&amp;2222
&amp;2222
2
fine
&amp;44
&amp;4,444,444
3333
&amp;3333
&amp;3333
4444
&amp;4444
&amp;4444
3
thanks
&amp;55
&amp;5,555,555
good
&amp;66
&amp;6,666,666
5555
&amp;5555
&amp;5555
6666
&amp;6666
&amp;6666
4
答案 0 :(得分:1)
不,您的数组没有具有相同索引的项目。它具有不同索引的项,但该值是包含每个对象具有相同名称的属性的对象。如果数组中有四个项目,则索引将从0
转到3
。
您可以在循环中使用value.hotel_id
来获取属性值的数组,例如["1"]
。
如果属性中的数组只包含一个id,则可以使用value.hotel_id[0]
来获取该ID。
示例:
$.each(data[0].hotel_id, function (index, value) {
alert(value.hotel_id[0]);
});
答案 1 :(得分:0)
我没有看到使用each
和匿名函数的重点。
我只想使用for循环。
for(var n = 0; n < data[0].hotel_id.length; n++) {
// put your function code here or call a named func(data[0].hotel_id[n])
}
如果我正在应用我将在其他地方重复使用的函数,我只使用每个。