Проблема с $ .each () в jQuery - PullRequest
       14

Проблема с $ .each () в jQuery

0 голосов
/ 28 сентября 2011

Я хочу добавить некоторые из массива с помощью jQuery.each и данных hotel_id, число каждый hotel_id равно 4, и этот цикл $.each(data[0].hotel_id,... }); запускает 4 раза содержимое внутри себя, в случае наличия или вставки в строки базы данных residence_u и residence_p 3 раза (в каждом из них есть 3, а не 4 (как hotel_id)), при запуске следующего кода этот код не имеет ошибки и не работает. если я удаляю коды $.each(info_ru.units,... }); и $.each(info_rp.start_date,... });, это сработало: как это исправить?

Смотрите полный мой код JS: [http://pastebin.com/jBWEDZrN][1]

Это сводка из моего js-кода в вызове ajax (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", "4444"],
        "end_date": ["3333", "4444"],
        "price_change": ["3333", "4444"]
    }, {
        "start_date": ["5555", "6666"],
        "end_date": ["5555", "6666"],
        "price_change": ["5555", "6666"]
    }]
}]

Обновление:

Я вставил несколько (array) значений с json_encode в одну строку из таблицы базы данных, теперь хочу, чтобы они отображались как порядок с jquery.

Выходной код js:

1
hello & 11 & 1,111,111
how & 22 & 2,222,222
what & 33 & 3,333,333,
1111 & 1111 & 1111
2222 & 2222 & 2222

2
fine & 44 & 4,444,444
3333 & 3333 & 3333
4444 & 4444 & 4444

3
thanks & 55 & 5,555,555
good & 66 & 6,666,666
5555 & 5555 & 5555
6666 & 6666 & 6666

4

1 Ответ

0 голосов
/ 28 сентября 2011

У вас есть только 3 элемента в ваших Residence_u и 2 в массивах Residence_p, но 4 в исходном массиве отелей.Может ли это быть так же просто, как проверить действительный info_ru

var info_ru = data[0].residence_u[index];
if ( infor_ru != null ) {
    $.each(info_ru.units, function (index, value) {
        $tooltip.append(value + ' & ' + info_ru.extra[index] + ' & ' + info_ru.price[index] + '<br>');
    });
}

, прежде чем продолжить с каждым?

...