データが他のサイトにある時の処理
データが他のサイトにあるときの読み込み方法を説明します。読み込みにはY.DataSource.Get({source:uri})を使用します。後述のリスト3の例題では、読み込むデータは、YUI3のダウンロードサイトにある例題で使用されているものを使います(http://developer.yahoo.com/yui/3/examples/datasource/datasource_get.html)。
データはJSON形式でリスト2のようになっています。
{
"query":{
"count":"10",
"created":"2009-06-04T05:15:06Z",
"lang":"en-US",
"updated":"2009-06-04T05:15:06Z",
"uri":"http://query.yahooapis.com/v1/yql?q=...query%3D%22pizza%22",
...
"results":{
"result":[
{
...
"dispurl":"www.<b>pizzahut.com<\/b>",
"size":"16217",
"title":"<b>Pizza<\/b> Hut",
"url":"http://www.pizzahut.com/"
},
{
...
"dispurl":"<b>mobile.papajohns.com<\/b>",
"size":"2315",
"title":"Papa John's Mobile Web",
"url":"https://mobile.papajohns.com/"
},
...
]
}
}
}
JSON(JavaScript Object Notation)とは、軽量のテキストベースのデータフォーマットのことで、JavaScriptがベースになっているものです。
リスト2のデータを使ってグループ名「query.results.result」、フィールド名「title」のデータを読み込みます。例題の実行画面を図2に示します。

リスト3をみてください。
YUI().use("dump", "node", "datasource", function (Y) {
var myDataSource = new Y.DataSource.Get({source:"http://query.yahooapis.com/v1/public/yql?format=json&"}); //(1)
myDataSource.plug(Y.Plugin.DataSourceJSONSchema, {
schema: {
resultListLocator: "query.results.result",
resultFields: ["title"]
}
}); //(2)
var myCallback = {
success: function(e){
for (var i in e.response.results){
alert(Y.dump(e.response.results[i].title));
}
},
failure: function(e){
alert("Could not retrieve data: " + e.error.message);
}
}; //(3)
Y.one('#button').on("click", function(e) {
a="Web";
myDataSource.sendRequest("q=select%20*%20from%20search.web%20where%20query%3D%22"+a+"%22", myCallback);
// select * from search.web where query:"Web" //(4)
});
});
</script>
(1)でuriを指定しています。(2)は読み込みデータの指定です。(4)のsendRequestの引数requestにはクエリー文を書いています。変数aに検索したい文字列を入れました。変数aを変更して検索をしてみてください。クエリー文は、指定したuriの固有の仕様です。(3)の表示は取り込んだtitleデータを順にalertで表示しています。
