1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- var request = new XMLHttpRequest()
- request.open('GET', 'https://raw.githubusercontent.com/David-Haim/CountriesToCitiesJSON/master/countriesToCities.json', true) // последний параметр указывает на синхронность или асинхронность запроса. В данном случае запрос асинхронный
- request.onreadystatechange = function(){ //обработчик изменения статуса запроса. Статус == 4 сигнализирует о том, что запрос окончен.
- if (request.readyState != 4){
- return;
- }
- if (request.status == 200){
- alert('all ok')
- console.log(JSON.parse(request.responseText))
- var object = JSON.parse(request.responseText);
-
- var keys = Object.keys(object);
- var select = document.createElement("select");
- for (var i = 0; i < keys.length; i++) {
- var option = document.createElement("option");
- option.innerHTML = keys[i];
- option.value = keys[i];
- select.appendChild(option);
- }
- select.onchange = function(e){
- console.log(this.value)
- var select = document.createElement("select");
- for (var i = 0; i < object[this.value].length; i++) {
- var option = document.createElement("option")
- option.innerHTML = object[this.value][i];
-
- select.appendChild(option);
-
- }
- if(document.body.children.length === 3){
- document.body.replaceChild(select, document.getElementById("main").nextElementSibling);
- }
- else
- document.body.appendChild(select);
- }
- document.body.appendChild(select);
- select.id = "main"
- }
- else {
- alert('shit happens: ' + xhr.status + ', ' + xhr.statusText );
- }
- }
- request.send()
|