Fusion Tables - Вызов API из браузера с использованием JavaScript - uncaught typeError
Я пытаюсь получить некоторые данные из таблицы Google Fusion.
Я использовал документацию Google для создания файла JSON с помощью вызова API Fusion Tbales следующим образом: https://www.googleapis.com/fusiontables/v1/query?sql=SELECT%20*% 20FROM% yyyyyy & key = xxxxxxxxx "
Теперь я хочу включить этот вызов в веб-страницу и отобразить результаты на той же странице.
Я следовал инструкциям на этой странице, где приведен пример кода (вызов API из браузера с использованием JavaScript): https://developers.google.com/fusiontables/docs/v1/getting_started
Я разместил код на своем сайте и заменил вызов скрипта на тот, что приведен в начале этого поста.
Когда я просматриваю страницу, ничего не отображается на странице, и я получаю сообщение об ошибке в консоли Google: Uncaught TypeError: Невозможно прочитать свойство 'length' undefined
Кто-нибудь знает лучший пример или учебник по этому, где работает пример кода?
ИЛИ ЖЕ
Кто-нибудь знает, почему этот скрипт не работает?
Код:
<html>
<head>
<title>Google Fusion Tables API Example</title>
</head>
<body>
<div id="content"></div>
<script>
function handler(response) {
for (var i = 0; i < response.items.length; i++) {
var item = response.items[i];
// Either show the body or the automatic columns of the template
if (item.body) {
document.getElementById("content").innerHTML += "<br>" + item.body;
} else {
for (var j = 0; j < item.automaticColumnNames.length; j++) {
document.getElementById("content").innerHTML += "<br>" + item.automaticColumnNames[j];
}
}
}
}
</script>
<script src="https://www.googleapis.com/fusiontables/v1/query?sql=SELECT%20*%20FROM%20xxxxq5TFqB4oM-HCQBkRqzOM6uC2qAIJDk91Q&keyXXXXXXXX"></script>
</body>
</html>
1 ответ
Когда я запускаю ваш код, я получаю ошибку JavaScript в Chrome:
Refused to execute script from 'https://www.googleapis.com/fusiontables/v1/query?sql=SELECT%20*%20FROM%20XXXXXXX&key=XXXXXXX' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.
В вашем запросе отсутствует параметр "callback=handler" (из приведенного вами примера).
Как только я исправлю, что ваша процедура синтаксического анализа не верна для возвращенных данных, в ответе отсутствует свойство items. Это работает для меня:
<html>
<head>
<title>Google Fusion Tables API Example</title>
</head>
<body>
<div id="content"></div>
<script>
function handler(response) {
var contentStr = "<table>";
for (var i = 0; i < response.rows.length; i++) {
var item = response.rows[i];
contentStr += "<tr>";
for (var j = 0; j < item.length; j++) {
contentStr += "<td>" + item[j]+"</td>";
}
contentStr += "</tr>";
}
contentStr += "</table>";
document.getElementById("content").innerHTML = contentStr;
}
</script>
<script src="https://www.googleapis.com/fusiontables/v1/query?sql=SELECT%20*%20FROM%20XXXXX=XXXXXX&callback=handler"></script>
</body>
</html>