2012-01-24 12 views
2

私はthis Google融合テーブルを照会するためにJavaScriptを使用していますが、私の関数から値を返す方法を理解していません。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

フュージョンテーブルから値が返されるタイミングを知りたいのですが、これは、コールバック 'getData()'の中から次の関数を呼び出すことを意味していると思います。 – djq

関連する問題