Как перекинуть данные в HTML таблицу? Не могу перекинуть данные с тегов в таблицу(

Yan Genc

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function () {

    if (this.readyState == 4 && this.status == 200) {

        GetNeededData(this);
    }
};

xmlhttp.open("GET", "http://api.worldweatheronline.com/premium/v1/weather.ashx?key=293fde5989a044348ad180530172204&q=Kremenchuk&format=xml&num_of_days=5", true);

xmlhttp.send();

function GetNeededData(xml) {
    var xmlDoc = xml.responseXML; 


    var temp_C = xmlDoc.getElementsByTagName("temp_C");
    document.write(temp_C[0].textContent ) 

    var temp_F = xmlDoc.getElementsByTagName("temp_F");
    document.write( temp_F[0].textContent)

    var windspeedKmph = xmlDoc.getElementsByTagName("windspeedKmph");
    document.write( windspeedKmph[0].textContent )   

}
1 ответ

Yan Genc

Немного модифицировал ваш код в сниппет, в котором видно, что после вызова open значение this.readyState = 1, а после send значение this.readyState = 4, но после вызова send падает ошибка 'Access-Control-Allow-Origin' (это логично и ожидаемо):

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {

  console.log(this.readyState); 
  console.log(this.status);

  if (this.readyState == 4) {
    GetNeededData(this);
  }
};

xmlhttp.open("GET", "");
xmlhttp.send();

function GetNeededData(xml) {
  document.write(1);
  document.write(2);
  document.write(3);
}

Увы, так как падает ошибка, связанная с отсутствием доступа 'Access-Control-Allow-Origin' или со смешанным контентом - не могу полностью протестировать ваш код. Но все же, дам ответ, который поможет. Добавил два вывода в консоль:

console.log(this.readyState); 
console.log(this.status);

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

С точки зрения кода - все в порядке. Но для уверенности нужно убедиться, что не падает ошибка Access-Control-Allow-Origin, к примеру. К какому выводу прихожу, добавьте как и я вывод в консоль, убедитесь, что статус ответа на запрос и текущее состояние объекта XMLHttpRequest соответствуют вашим ожиданиям:

this.readyState == 4 && this.status == 200

Убедитесь, что в переменных получены данные (можно также, через console.log):

var temp_C = xmlDoc.getElementsByTagName("temp_C");
var temp_F = xmlDoc.getElementsByTagName("temp_F");
var windspeedKmph = xmlDoc.getElementsByTagName("windspeedKmph");

Также, убедитесь, что вам нужен метод document.write(), который работает только пока HTML-страница находится в процессе загрузки.

licensed under cc by-sa 3.0 with attribution.