2012-01-24 1 views
2

Я использую javascript для запроса this таблицы google fusion и не понимаю, как вернуть значения из моей функции.Использование обратного вызова с помощью Google Fusion Tables

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() 

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

ответ

3

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

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();  
} 
+0

Спасибо @Bassam - с этим подходом, хотя, я не могу сказать, когда запрос возвращается значение для последующих расчетов. Возможно, это также проблема с моим первоначальным предлагаемым подходом. – djq

+0

@celenius вы хотите знать, если ваш запрос возвратил строки? Если это так, вы можете использовать cities.getNumberOfRows() == 0 –

+0

Я хочу выяснить, когда значение возвращается из таблицы fusion; Я полагаю, это означает, что я просто вызываю последующие функции из callback 'getData()' – djq