Использование обратного вызова с Google Fusion Tables - PullRequest
2 голосов
/ 24 января 2012

Я использую javascript для запроса этой таблицы Google Fusion и не понимаю, как вернуть значения из моей функции.

function fusionTableQuery(){    
    var result;
    var queryurl = "http://www.google.com/fusiontables/api/query?sql=";    
    var sql = "SELECT+City+FROM+2175264+WHERE+Population>200000"; 
    var querytail = "&jsonCallback=?";        
    var jqxhr=$.get(queryurl + sql + querytail, result = 
                function queryHandler(data) {   // display retrieved data    
                    console.log(data.table.rows);
                    return data.table.rows;
                }
                , "jsonp") 

    return result;

}

Я могу видеть вconsole.log() выводит значения, которые я хочу видеть, но у меня нет четкого понимания работы обратного вызова.

Я хочу сохранить результат моего запроса в переменной, похожей на следующую:

cities = fusionTableQuery()

Можете ли вы помочь мне лучше понять, как этого добиться?Мне трудно понять, как обратный вызов должен работать здесь.В качестве альтернативы, я был бы так же рад, если бы здесь не использовался обратный вызов, если это не требуется.

1 Ответ

3 голосов
/ 24 января 2012

Вот как вы можете это сделать:

var cities;

function createSidebar(searchStr) {
  //searchStr is your query -> SELECT * FROM table ...

  var queryText = encodeURIComponent(searchStr);
  var query = new google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq=' + queryText);

  query.send(getData); //set the callback function
}

function getData(response) {
 cities = response.getDataTable();     
}
...