Проблема в цикле JSON - PullRequest
3 голосов
/ 22 мая 2011

Я хочу добавить данные в selectbox. Но я получил эту ошибку ...

"Ошибка: $ (" "). Attr (" значение ", guruMapelId) .html не является функцией
Исходный файл: http://localhost:8084/controller?aksi=kurikulum
Линия: 5 "

это мой код JS:

function dataGuruMapelSelect(dataSelect){
    $.getJSON("controller", "aksi=dataGuruMapel", function(json){
        $.each(json.guruMapelData, function(k,v){
            var guruMapelId = v.guruMapelId;
            var guruNama = v.guruNama ;
            $('<option />').attr('value',guruMapelId).html(guruNama).appendTo(dataSelect);
        })
    });
}

А это данные JSON

{
    "guruMapelData": [
        {
            "guruMapelId ": "1",
            "guruNip ": "1331/001",
            "guruNama ": "HARI BUDIYONO DRS.",
            "mapelNama ": "PPKn",
            "tahunAjarNama ": "2010/2011",
            "mapelKategoriNama ": "Normatif",
            "mapelId ": "1"
        },
        {
            "guruMapelId ": "2",
            "guruNip ": "1331/002",
            "guruNama ": "PENI WARDAYANI DRA",
            "mapelNama ": "Kewirausahaan",
            "tahunAjarNama ": "2010/2011",
            "mapelKategoriNama ": "Produktif",
            "mapelId ": "2"
        }
    ]
}

В чем моя вина? Спасибо, прежде чем ...

Ответы [ 3 ]

4 голосов
/ 22 мая 2011

Ваши ключи JSON содержат пробелы после их имен, поэтому ключ "guruMapelId ", а не "guruMapelId".Вы можете удалить пробел из ключей JSON или использовать var guruMapelId = v["guruMapelId "]; и var guruNama = v["guruNama "];.

2 голосов
/ 22 мая 2011

Это было сложно.Если вы передадите undefined в attr (attr('value', undefined)) или html (html(undefined)), это будет фактически то же самое, что вызов attr('value') или html(), которые оба возвращают строку, а не jQueryобъект.

Но подождите , вы говорите, Я не передаю undefined, я передаю значения guruMapelId и guruNama!

Давайте посмотрим поближе: Все ключи в JSON имеют завершающий пробел .Это означает, что v.guruMapelId не существует (следовательно, undefined).Вам нужно будет получить доступ к данным с помощью

v['guruMapelId '] // <-- note the trailing space

То же самое для guruNama.Но лучше было бы создать правильный JSON.

DEMO

0 голосов
/ 22 мая 2011

Проверьте, что вы получаете в своем вызове $ .getJSON (просто используйте alert (guruMapelId) и guruNama), тогда вы можете просто сделать свой выбор следующим образом:

$('<option />').val(guruMapelId).text(guruNama)appendTo(dataSelect);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...