2016-09-02 8 views
0

Я новичок в javascript. Это моя первая реальная попытка сделать что-то, кроме того, что я приветствую мир. Я пытаюсь извлечь информацию из URL-адреса и отобразить его. Я проверил URL, и он возвращает json. Выполняется код Hello World, но как только я добавляю код, который извлекает json внутри тегов скрипта, ничего не происходит. У меня нет синтаксических ошибок.Почему код Javascript не запускается?

<!DOCTYPE HTML> 

<html> 

<body> 

    <p>Header...</p> 

    <script> 
    document.write("Hello World"); 

    var getJSON = function(url, callback) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open("get", url, true); 
    xhr.responseType = "json"; 
    xhr.onload = function() { 
     var status = xhr.status; 
     if (status == 200) { 
     callback(null, xhr.response); 
     } else { 
     callback(status); 
     } 
    }; 
    xhr.send(); 

}; 

    getJSON("http://api.tvmaze.com/schedule?country=US&date=2016-08-31", 
    function(err, data) { 
    if (err != null) { 
    alert("Something went wrong: " + err); 
    } else { 
    alert("Your query count: " + data.query.count); 
    } 
}); 

    </script> 
    <p>...Footer</p> 

</body> 

</html> 

ответ

3

Я проверил ваш HTML и JS и один быстрый взгляд в консоль показал мне, что проблема была эта линия

alert("Your query count: " + data.query.count); 

изменить «data.query.count» на «data.length»

alert("Your query count: " + data.length); 

Код отладки является одним из самых простых способов поиска ошибок. Вы можете нажать клавишу F12 в Основном любой браузер, чтобы осмотреть вещи за сценой

enter image description here

+0

Я использовал редактор js онлайн, который вносил свой вклад в мое замешательство. После просмотра ответа, исправления предупреждения («Ваш счетчик запросов:« + data.query.count ») и работает как HTML, удалось получить результаты. Спасибо. – OOPNewbie

0

Если изучить консоль в вашем браузере, вы увидите, что ваш код бросает ошибку в Uncaught TypeError: Cannot read property 'count' of undefined.

Это потому, что вы пытаетесь получить доступ к длине массива ответов с помощью data.query.count, когда на самом деле это должно быть data.length.

Таким образом, рабочий код должен выглядеть;

<!DOCTYPE HTML> 

<html> 

<body> 

    <p>Header...</p> 

    <script> 
    document.write("Hello World"); 

    var getJSON = function(url, callback) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open("get", url, true); 
    xhr.responseType = "json"; 
    xhr.onload = function() { 
     var status = xhr.status; 
     if (status == 200) { 
    callback(null, xhr.response); 
     } else { 
    callback(status); 
     } 
    }; 
    xhr.send(); 

}; 

    getJSON("http://api.tvmaze.com/schedule?country=US&date=2016-08-31", 
    function(err, data) { 
    if (err != null) { 
    alert("Something went wrong: " + err); 
    } else { 
    alert("Your query count: " + data.length); 
    } 
}); 

    </script> 
    <p>...Footer</p> 

</body> 

</html> 
Смежные вопросы