YUI 3.x Home -

Site Search (YDN & YUIBlog):

# YUI Library Examples: DataSource Utility: DataSource.Get

## DataSource Utility: DataSource.Get

DataSource.Get uses the Get Utility to retrieve data, even cross-domain resources, via a dynamically created script node. A DataSchema plugin is used to normalize incoming data into a known format for consistency of usage by other components. Please note that your data resource must support a callback mechanism, which is a function wrapper around the returned data. The name of the callback function is passed to the resource via a query string parameter defined by the DataSource.Get attribute `scriptCallbackParam`.

View example in new window.

#### JSON

###### Data

    {
        "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":"www.<b>dominos.com<\/b>",
                        "size":"29739",
                        "title":"Domino's <b>Pizza<\/b>",
                        "url":"http://www.dominos.com/"
                    },
                    {
                        ...
                        "dispurl":"<b>mobile.papajohns.com<\/b>",
                        "size":"2315",
                        "title":"Papa John's Mobile Web",
                        "url":"https://mobile.papajohns.com/"
                    },
                    ...
                ]
            }
        }
    }

###### Schema

    {
        resultListLocator: "query.results.result",
        resultFields: ["title"]
    }

###### Normalized data

Use a DataSourceJSONSchema plugin to parse the data against a schema that you provide:

    YUI().use("datasource-get", "datasource-jsonschema", function(Y) {    var myDataSource = new Y.DataSource.Get({        source:"http://query.yahooapis.com/v1/public/yql?format=json&"}),        myCallback = {            success: function(e){                alert(e.response);            },            failure: function(e){                alert("Could not retrieve data: " + e.error.message);            }        };     myDataSource.plug(Y.Plugin.DataSourceJSONSchema, {        schema: {            resultListLocator: "query.results.result",            resultFields: ["title"]        }    });     myDataSource.sendRequest("        q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", myCallback);});

    YUI().use("datasource-get", "datasource-jsonschema", function(Y) {
        var myDataSource = new Y.DataSource.Get({
            source:"http://query.yahooapis.com/v1/public/yql?format=json&"}),
            myCallback = {
                success: function(e){
                    alert(e.response);
                },
                failure: function(e){
                    alert("Could not retrieve data: " + e.error.message);
                }
            };

        myDataSource.plug(Y.Plugin.DataSourceJSONSchema, {
            schema: {
                resultListLocator: "query.results.result",
                resultFields: ["title"]
            }
        });

        myDataSource.sendRequest("
            q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", myCallback);
    });

YUI().use("datasource-get", "datasource-jsonschema", function(Y) { var myDataSource = new Y.DataSource.Get({ source:"http://query.yahooapis.com/v1/public/yql?format=json&"}), myCallback = { success: function(e){ alert(e.response); }, failure: function(e){ alert("Could not retrieve data: " + e.error.message); } }; myDataSource.plug(Y.Plugin.DataSourceJSONSchema, { schema: { resultListLocator: "query.results.result", resultFields: ["title"] } }); myDataSource.sendRequest(" q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", myCallback); });

Copyright © 2009 Yahoo! Inc. All rights reserved.

Privacy Policy - Terms of Service - Copyright Policy - Job Openings