Для цикла через JSON

0

Я создал этот сервер JSON, который я использую для добавления описания, цены, времени и даты на страницу с помощью jQuery.

[{
    "palvelu_id": "1",
    "palvelu_nimi": "Meikkikoulutus",
    "palvelu_kuvaus": "Description",
    "palvelu_hinta": "10"
}, {
    "aika_id": "1",
    "aika_kello": "14.00",
    "aika_paivamaara": "28.10.2013",
    "aika_paikkoja": "5",
    "aika_palvelu": "1"
}, {
    "aika_id": "2",
    "aika_kello": "12.00",
    "aika_paivamaara": "12.10.2013",
    "aika_paikkoja": "1",
    "aika_palvelu": "1"
}]

Поэтому я добавляю контент в div #ajanvarausInfo, который отлично работает. Но я также пытаюсь добавить параметры в поле выбора, что не совсем работает, поскольку я получаю только один <option></option>.

Я новичок for петлях, и я не совсем уверен, как они работают.

var json = $.parseJSON(thejson);
    $("#ajanvarausInfo").html(json[0].palvelu_kuvaus+"<br>Osallistuminen maksaa "+json[0].palvelu_hinta+ "&euro;.");

for(var i = 0; i < json.length;i++){
    $("#asiakasAika").html('<option value="'+json[1].aika_id+'">'+json[1].aika_kello+' '+json[1].aika_paivamaara+'</option');
}
  • 3
    ну, вместо [1] , вы хотите [i] ...
  • 0
    @KevinB Сделал это, но я все еще получаю только одну опцию на мой выбор.
Показать ещё 1 комментарий
Теги:
for-loop

3 ответа

0
Лучший ответ

Вместо .html() используйте .append()

Ваш JSON также неверен. Если вы хотите иметь несколько элементов, вам необходимо обернуть их в другой элемент JSON, а затем выполнить цикл:

[{
    "palvelu_id":"1",
    "palvelu_nimi":"Meikkikoulutus",
    "palvelu_kuvaus":"Description",
    "palvelu_hinta":"10"
}, 
{
    "items": {
                "aika_id":"1",
                "aika_kello":"14.00",
                "aika_paivamaara":"28.10.2013",
                "aika_paikkoja":"5",
                "aika_palvelu":"1"
             },
             {
                "aika_id":"2",
                "aika_kello":"12.00",
                "aika_paivamaara":"12.10.2013",
                "aika_paikkoja":"1",
                "aika_palvelu":"1"
             }
}]

Затем выполните цикл следующим образом:

 $.each(data.items, function () { alert(this.aika_id) });
  • 0
    Конечно! Вот почему у меня только 1 вариант. Но так как json генерируется php, а затем извлекается одним ajax-запросом, как я могу использовать элементы json и использовать их оба?
  • 0
    просто переберите динамические данные и добавьте их к элементам с помощью PHP. у вас могут быть базовые элементы, а затем коллекции из нескольких элементов для циклического прохождения, если вы используете предоставленный мной синтаксис.
Показать ещё 2 комментария
0
for(var i = 0; i < json.length;i++){
    $("#asiakasAika").append('<option value="'+json[i].aika_id+'">'+json[i].aika_kello+' '+json[i].aika_paivamaara+'</option>');
}

Изменить 1 на i

  • 0
    Почему голосование за?
  • 0
    Не понизил, но не решил проблему.
Показать ещё 3 комментария
0

использовать jquery, встроенный в каждую функциональность

var id = $('#asiakasAika');
$.each(json, function(key, value){
  id.append('<option value="'+value.aika_id+'">'+value.aika_kello+' '+value.aika_paivamaara+'</option>');
});
  • 1
    Что не так с for ? :) Это всегда немного быстрее;)
  • 0
    Мой плохой, я думал, что это было быстрее ... но он держит прицел (и выглядит чище!)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню