2012-02-03 6 views
0

うん、私は数日前に壁に頭を打つされているように、誰かが私をここに助けたり、正しい方向に向けることができますどこでも役に立つgettin。 (そして確かに私はかなりjson、オブジェクト、google visulizationなどに関して) 本質的に、3つの異なるフュージョンテーブルに対して同じページで3つの異なるクエリを実行しています。マーカーの異なるxets。 私は個々にクエリを実行し、マーカーの配列を作成すると、すべてが問題ありません。 しかし、同じページで3つのクエリを実行すると、私は応答関数でクエリを識別する方法を見つけることができないようです。Googleの視覚化api、応答関数でtableidを特定

何かヒントありがとうございました。必要に応じてもっと情報を提供して幸いです(不必要なものを取り除こうとしました)

これは私の持っているものです。ありがとう

a)関数 "setFusionData()"をすべての関連変数とともに呼び出します。 setFusionData( "'LatLng'、 'name'"、2729461)のようなものです。 *

function setFusionData(selColumns,tableId) { 
...... 
    query.send(getFusionData({reqId:tableId})); 
} 


function getFusionData(response) { 
    alert(response['reqId']);//returns tableId. but how do i get the tableData ? 

} 

ウィッヒと私はREQIDを得ることができますが、ないテーブル*データ: は

  function setFusionData(selColumns,tableId) { 
       /**** 
       an actual query example is this: 
       http://www.google.com/fusiontables/gvizdata?tqx=reqId:1234&tq="select+'LatLng','name'+from+2729461" 
       ****/ 

       var query = new google.visualization.Query(
        'http://www.google.com/fusiontables/gvizdata?tqx=reqId:1234&tq='+ encodeURIComponent("SELECT "+selColumns+" FROM "+tableId+"") 
      ); 

       query.send(getFusionData); //do something with the response  
      } 


      function getFusionData(response) { 

       /**    
       here, is the problem as i need to get the table id or reqId or anything that is uniquely passed on from "setFusionData" above 
       also something like 
       alert(JSON.stringify(response)) does not return any reqId or table id either 
       ***/ 


       /*return rows/columns and add values to an array of markers***/  
        var numRows = response.getDataTable().getNumberOfRows(); 
        var numCols = response.getDataTable().getNumberOfColumns(); 
        for (i = 0; i < numRows; i++) {      
         /* add markers to array etc this works fine***/  
        } 



      } 

は、私もこのような何かを試してみました(これはcallesに異なる変数で3回です)。だから私は、唯一のIDまたはデータのいずれかを取得することができる午前:(

----編集----------------

ビットの周りを参照(詳細をいじり後以下)には、ブラウザにクエリを入力するときに返されます、キー/値のペアが直接に直接入力以下

  http ://www.google.com/fusiontables/gvizdata?tqx=reqId:1234&tq="select+'LatLng','name'+from+2729461" 

つまり...スクリプトからの呼び出しによって返されるものとは異なっていることが表示されますブラウザバーが返信します

  version:'0.5',reqId:'1234',status:'ok',table etc 
しかし

、誰任意の......スクリプト内

   { 
       "rj":"0.5","ef":"ok","pb":[],"qb":[],"h":"{"cols": 
         [{"id":"col2","label":"LatLng","type":"string"},{"id":"col1","label":"name","type":"string"}], 
        "rows": 
         [{"c":[{"v":"47.20572,12.70414"}, 
        {"v":"Hohe Tauern"}]},{"c":[{"v":"47.5530395,12.925611"},{"v":"Berchtesgaden"}]},{"c":[{"v":"47.5585405,14.61887"},{"v":"Gesu00e4use"}]}], 
         "p":{"totalrows":3} 
        }" 
       } 

、ありませんので「REQID」は(どちらかREQIDのように見える1なし)のみいくつかの不可解なキーのようなものを返すから同じことを呼び出しますそれはなぜ/そうなるのだろうか?

時には

答えて

0

あなたのサンプルリクエストに戻り、ちょうどJSONレスポンスを見て、それを把握することができます

google.visualization.Query.setResponse({ 
    version:'0.5', 
    reqId:'1234', 
    status:'ok', 
    table: { 
     ... 
    } 
}) 

あなたは既にのために、この応答である要求を識別するためにresponse.reqIdを持って、今あなたがresponse.tableを使用することができますあなたが複数のテーブルを持っているので

var dt = new google.visualization.DataTable(response.table); 

または、reqId

をインデックスとする配列で、その後に置く:新しい DataTableインスタンスを作成します
tables[response.reqId] = new google.visualization.DataTable(response.table); 

setFusionData()を初めて呼び出す前に、var tables = new Array()を実行します。

+0

hmm、おそらく少し密度が高い(おそらく)。私は以下を試しました: [code] function getFusionData(レスポンス){ var dt = new google.visualization.DataTable(response.reqId); 警告(JSON.stringify(dt)) } [コード] しかし、私はcols/rows/p(何でもありますが)reqIDを取得します – olly

+0

私はもうちょっと騒ぎましたが、 {"rj": "0.5"、 "ef": "ok"、 "pb":[]、 "応答が実際にこのようなものを返すため、 「col2」、「ラベル」、「LatLng」、「ラベル」、「ラベル」、「ラベル」、「ラベル」、「ラベル」、 \ "型\":\ "文字列\":\ "型\":\ "型\ ]、 \t \ "rows \": \t \t [{\ "v \":\ "47.20572,12.70414 \"}、 \t {\ "v \":\ "Hohe Tauern \"}]} Berchtesgaden \ "}]}、{\" v \ ":\" 47.5530395,12.925611 \ "}、{\" v \ "} "\" 47.5585405,14.61887 \ "}、{\" Vの\ ":\" ":{\ "totalrows \ ":3} ジス\\ u00e4use \ Pの\"}]}]、 \t \t \" \t} " } – olly

+0

google.visualization.DataTable(response.reqId)をgoogle.visualization.DataTable(response.table)に置き換えると正常に動作します。 iは '関数getFusionData(応答){ \t VAR RI = response.reqId得る ' ; – miguev

関連する問題