getjson () выпадающий JQuery не работает - PullRequest
0 голосов
/ 29 августа 2011

У меня есть следующий файл json:

{
"viewport_size":
              {"display_name":"VIEWPORT SIZE:",
               "name":"viewport_size",
                "format":"number",
                 "type":"dropdown",
                 "dflt":"640 * 480",
                 "values":["800*600","1280*720","1920*1080"],
                 "isMandatory":"true"},
 "framerate":
                {"display_name":"FRAMERATE:",
                 "name":"fps",
                 "format":"number",
                 "type":"dropdown",
                 "dflt":"30",
                 "values":["45","60","90"],
                "isMandatory":"true"},
"pattern_resolution":
               { "display_name":"PATTERN RESOLUTION:",
                 "name":"resoln",
                 "format":"number",
                 "type":"dropdown",
                 "dflt":"8",
                 "values":["16","32","64"],
                 "isMandatory":"true"}
 }

Я пытаюсь заполнить раскрывающийся список в моем файле js, используя getJSON ()

  var INPUT_TEXT='<input type="text"/>';
    var INPUT_RADIO='<input type="radio"/>';
    var INPUT_CHECKBOX='<input type="checkbox"/>';
    var INPUT_DROPDOWN='<select id="items"></select>';
    var SUBMIT_BUTTON='<input type="button" value="SUBMIT"/>';
    var NEWLINE='<br></br>';

$.getJSON('json_input/client_settings_input.json',function(clientData)
{   
$.each(clientData,function(i,feild)
{
    if(this.type=="dropdown")
    { 
        var html = '';    
        var len = feild.values.length;    
        //alert('lenght is'+len);
        for (var i = 0; i< len; i++){        
            //alert('inside for');
            html += '<option>'+ feild.values[i]+'</option>';   
        }
            $('body #tabs #tabs-2 client').append  (this.display_name).append(INPUT_DROPDOWN).append(html).append(NEWLINE);         
    }
         });    

$('body #tabs #tabs-2 #client').append(SUBMIT_BUTTON);
});

, но я не могупросмотреть выпадающий список и значения ... Пожалуйста, укажите, где я ошибаюсь ..

Я хочу заполнить как этот VIEWPORT: значения dropdownlist FRAMERATE: значения dropdownlist PATTERN_RESOLUTION: значения dropdownlist

Ответы [ 2 ]

0 голосов
/ 29 августа 2011

Попробуйте добавить параметр "jsoncallback =?" на ваш URL

$.getJSON('json_input/client_settings_input.json?jsoncallback=?',function(clientData)

jQuery заменит последний вопросительный знак после параметра jsoncallback идентификатором.

Этот идентификатор будет затем использоваться на стороне сервера для создания ответа, который будет начинаться с функции, названной из значения идентификатора.

Это приведет к ответу, который будет выглядеть примерно так:

jQuery16205149872086476535_1314088378455({
  "viewport_size":
          {"display_name":"VIEWPORT SIZE:",
           "name":"viewport_size",
            "format":"number",
             "type":"dropdown",
             "dflt":"640 * 480",
             "values":["800*600","1280*720","1920*1080"],
             "isMandatory":"true"},
 "framerate":
            {"display_name":"FRAMERATE:",
             "name":"fps",
             "format":"number",
             "type":"dropdown",
             "dflt":"30",
             "values":["45","60","90"],
            "isMandatory":"true"},
 "pattern_resolution":
           { "display_name":"PATTERN RESOLUTION:",
             "name":"resoln",
             "format":"number",
             "type":"dropdown",
             "dflt":"8",
             "values":["16","32","64"],
             "isMandatory":"true"}
});

Итак, в кратком ответе, если ваш ответ json НЕ обернут в это имя функции, функция обратного вызова не сработает, вместо этого вы получите сообщение об ошибке, которое вы могли бы увидеть следующим образом:

$.getJSON('json_input/client_settings_input.json?jsoncallback=?',function(clientData) {

    //your code

}).error(function(jqXHR, textStatus, errorThrown) {
    alert("Error: " + textStatus + " errorThrown: " + errorThrown);
})

Надеюсь, это поможет

Patrik

0 голосов
/ 29 августа 2011

Попробуйте

.append($(INPUT_DROPDOWN).html(html))

С .append(INPUT_DROPDOWN).append(html)

опции должны быть в выборе, но вы вставляете на том же уровне, что и выбор. см http://jsfiddle.net/q7fWt/

...