2011-07-10 4 views
0

私はJSONPを使用してGoogleをYQL(JSONからJSONPに変換)で取得しています。 成功ハンドラが呼び出されましたが、同じハンドラを他のYQL呼び出しに使用し、ハンドラ関数自体でどのスクリプト/データソースが使用されているかを識別できるようにしたいと考えています。それを行う方法はありますか?JSONP/YQL:データソースの特定

var url = "http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20json%20WHERE%20url%3D%22http%3A%2F%2Fmaps.googleapis.com%2Fmaps%2Fapi%2Fgeocode%2Fjson%3Flatlng%3D"+ latitude.toString()+ "%2C"+ longitude.toString() + "%26sensor%3Dtrue%22&format=json&diagnostics=true&callback=handler"; 

var script = document.createElement("script"); 
script.setAttribute("src", url); 
document.getElementsByTagName("head")[0].appendChild(script); 

答えて

1

API呼び出しごとにある種の一意のキーを保持しておき、その呼び出しに関する情報を保持する以外の方法はありません。きれいなグローバル名前空間を保つために、あなたは、その特性として、クエリごとのサブオブジェクトを割り当て、各プロパティにバック関数への参照を与え、単一のトップレベルのオブジェクトを作成することができます。

function yqlHandler(json) { 
    // ... 
} 

var uid = 1; 
function makeQuery(query, data) { 
    var key = 'query-' + uid++; 
    yqlHandler[key] = data; 
    yqlHandler[key].handler = yqlHandler; 
    var url = "http://query.yahooapis.com/v1/public/yql?q=" + query + "&callback=yqlHandler." + key + ".handler"; 
    // ... make the JSONP call 
} 

こと関数を呼び出したときに使用された "データ"オブジェクトを指すthisを取得します。もちろんそれを行う他の同様の方法があります。

関連する問題