main.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var request = new XMLHttpRequest()
  2. request.open('GET', 'https://raw.githubusercontent.com/David-Haim/CountriesToCitiesJSON/master/countriesToCities.json', true) // последний параметр указывает на синхронность или асинхронность запроса. В данном случае запрос асинхронный
  3. request.onreadystatechange = function(){ //обработчик изменения статуса запроса. Статус == 4 сигнализирует о том, что запрос окончен.
  4. if (request.readyState != 4){
  5. return;
  6. }
  7. if (request.status == 200){
  8. alert('all ok')
  9. console.log(JSON.parse(request.responseText))
  10. var object = JSON.parse(request.responseText);
  11. var keys = Object.keys(object);
  12. var select = document.createElement("select");
  13. for (var i = 0; i < keys.length; i++) {
  14. var option = document.createElement("option");
  15. option.innerHTML = keys[i];
  16. option.value = keys[i];
  17. select.appendChild(option);
  18. }
  19. select.onchange = function(e){
  20. console.log(this.value)
  21. var select = document.createElement("select");
  22. for (var i = 0; i < object[this.value].length; i++) {
  23. var option = document.createElement("option")
  24. option.innerHTML = object[this.value][i];
  25. select.appendChild(option);
  26. }
  27. if(document.body.children.length === 3){
  28. document.body.replaceChild(select, document.getElementById("main").nextElementSibling);
  29. }
  30. else
  31. document.body.appendChild(select);
  32. }
  33. document.body.appendChild(select);
  34. select.id = "main"
  35. }
  36. else {
  37. alert('shit happens: ' + xhr.status + ', ' + xhr.statusText );
  38. }
  39. }
  40. request.send()