2016-02-10 5 views
0

Я пытаюсь программно заполнить тег selectoptgroup и option тегами, используя jQuery. У меня код отлаживается с помощью JSHint (по крайней мере, он говорит, что ошибок нет), и по большей части он, по крайней мере, ставит окно выбора. Однако это не прикладывая данные вЗаполнение с помощью optgroup с помощью jQuery

Код:. JSFiddle

данных: JSON File

Я хотел бы, чтобы вывести что-то вдоль линий:

<select id="profile_title" name="profile_title"> 
    <optgroup label="Backers"> 
    <option value="civi">Civilian</option> 
    <option value="scot">Scout</option> 
    </optgroup> 
    <optgroup label="Other Titles"> 
    <option value="apex">Apex Predator</option> 
    <option value="etc">Etc etc..</option> 
    </optgroup> 
</select> 

Могу ли я просто пытаюсь получил один или несколько уровней слишком глубоко? О, и файл JSON, который я проверил с помощью The JSON Validator.

Любая помощь будет оценена по достоинству. Благодаря!

+1

Проверьте консоль; вы заблокированы одной и той же политикой происхождения. Если домен, который вы вызываете, не поддерживает JSONP или CORS, вы не можете сделать это, используя только JS. –

+0

ok, ty. Я загружу его прямо на свой сервер и протестирую там. Благодаря! –

+0

Кроме того, следует удалить строку '$ .appendTo (« # где-то »);'. Это ничего не делает :) – Philip

ответ

1

Ваш код работает для меня, как только я снял $ .appendTo ('# где')

JS, которые работали для меня:

$.getJSON('https://sow.zhivco.com/assets/json/titles.json', { 
    format: "JSON" 
}).done(function(data) { 
    $.each(data, function(i, optgroups) { 
    $.appendTo("#somewhere"); 
    $.each(optgroups, function(groupName, options) { 
    var $optgroup = $("<optgroup>", { 
     label: groupName 
     }); 
     $optgroup.appendTo('#somewhere'); 
     $.each(options, function(j, option) { 
     var $option = $("<option>", { 
      text: option.title, 
      value: option.value 
     }); 
     $option.appendTo($optgroup); 
     }); 
    }); 
    }); 
}); 

Here is a working codepen.

я должен был загрузить JSON в переменная в кодефене, потому что сервер, на котором он размещен, не поддерживает CORS issues.

Если у вас проблемы с CORS, на этом сайте есть много ответов на вопросы, которые могут вам помочь.

+0

Спасибо! Рад видеть, что это проблема только CORS, как вы заявили. Цените помощь! –

0

отправить Аякса только на сервер

и на сервере сделать

echo file_get_contents('https://sow.zhivco.com/assets/json/titles.json') 

или использовать CURL

!!! кросс-домен ajax не годится !!!

+0

Спасибо, что помогли мне. :) –

Смежные вопросы