Таблица слияния запросов из функции JavaScript в API v1


Я пытаюсь выяснить, как использовать новый Fusion Table API v1 для запроса таблицы из функции Javascript. Я хочу иметь возможность перебирать результат, строку за строкой, и делать что-то еще (в данном случае геокодирование адресов), когда я иду.

У меня есть синтаксис для запроса, работающего нормально. Когда я вставляю http-файл в браузер, он возвращает правильный результат.

Чего я не могу понять, так это как сделать запрос в первую очередь, и получить результат, где я могу использовать оно.

Этот пост близок к тому, что я хотел бы сделать, но он использует старый API: http://www.reddmetrics.com/2011/08/10/fusion-tables-javascript-query-maps.html

function getData() {
    // Builds a Fusion Tables SQL query and hands the result to  dataHandler

    var queryUrlHead = 'https://www.googleapis.com/fusiontables/v1/query?sql=';
    var queryUrlTail = '&key={my key}';
    Table = {my table id};

    // write your SQL as normal, then encode it
    var query = "SELECT Address, Name FROM " + Table + " LIMIT 5";
    var queryurl = encodeURI(queryUrlHead + query + queryUrlTail);

    var jqxhr = $.get(queryurl, dataHandler, "jsonp");
}

Может быть, jquery не нужен с новым api?

1   2   2013-08-04 15:04:17

1 ответ:

Код, который вы предоставили, в порядке, он работает, как и ожидалось (для меня). Я создал jsFiddle, чтобы показать вам пример его использования .

Все, что вам нужно сделать, это указать функцию с именем dataHandler, так как это то, что вы говорите jQuery использовать в качестве обратного вызова. То есть результатом вызова jQuery является то, что он вызывает указанную Вами функцию.

Для начала я предлагаю сделать вашу таблицу Fusion общедоступной. Таким образом, вы можете изучить использование API, не беспокоясь о проверке подлинности и т.д.

function dataHandler(response) {
    console.log(response);
    //do something with the data using response.rows
}

function getData() {
    // Builds a Fusion Tables SQL query and hands the result to  dataHandler

    var queryUrlHead = 'https://www.googleapis.com/fusiontables/v1/query?sql=';
    var queryUrlTail = '&key={my key}';
    Table = {my table id};

    // write your SQL as normal, then encode it
    var query = "SELECT Address, Name FROM " + Table + " LIMIT 5";
    var queryurl = encodeURI(queryUrlHead + query + queryUrlTail);

    var jqxhr = $.get(queryurl, dataHandler, "jsonp");
}

Если вы просто используете console.log для анализа ответа, полученного от таблиц Fusion (нажмите F12 в браузере, чтобы открыть консоль/инструменты разработчика), вы увидите, что вы получаете объект с columns и rows свойством, например, что вы можете использовать данные так, как вам нравится. Мой пример выше просто печатает таблицу HTML полученных данных.

В случае, если ваш запрос содержит ошибку или недоступен, свойство error устанавливается с соответствующим сообщением об ошибке.