首页 > 解决方案 > 在 YUI 中的 DataSource 中显示网格中的数据?

问题描述

我在这个问题中附上了我的代码。

我正在使用 YUI-3 从 DataSource 以网格格式显示数据

我无法从数据源获取数据。但是从 URL 传递的数据。

我的网格No data to display总是显示..

<script src="http://yui.yahooapis.com/3.18.1/build/yui/yui-min.js"></script>
<script>
YUI().use("datatable", "datasource-get", "datasource-jsonschema", "datatable-datasource", function (Y) {

    var url = "http://domainname.com/trans/sample_json.php?format=json",
        query = "&return=true",
        dataSource,
        table;

    dataSource = new Y.DataSource.Get({ source: url });

    dataSource.plug(Y.Plugin.DataSourceJSONSchema, {
        schema: {
            resultListLocator: "query.results.result",
            resultFields: [
                "Title",
                "Phone",
                {
                    key: "Rating",
                    locator: "Rating.AverageRating",
                    parser: function (val) {
                        // YQL is returning "NaN" for unrated restaurants
                        return isNaN(val) ? -1 : +val;
                    }
                }
            ]
        }
    });

    table = new Y.DataTable({
        columns: [
            "Title",
            "Phone",
            {
                key: "Rating",
                formatter: function (o) {
                    if (o.value === -1) {
                        o.value = '(none)';
                    }
                }
            }
        ],
        width:"100%",sortable: true,
        summary: "Pizza places near 98089",
        caption: "Table with JSON data from Datasource...."
    });

    table.plug(Y.Plugin.DataTableDataSource, { datasource: dataSource });

    table.render("#pizza");

    table.datasource.load({

        callback: {
            success: function (e) {
                table.datasource.onDataReturnInitializeTable(e);
            },
            failure: function() {
                Y.one('#pizza').setHTML(
                    'The data could not be retrieved. Please <a href="?mock=true">try this example with mocked data</a> instead.');
            }
        }
    });
});
</script>

这是sample_json.php文件。在这里,我以 JSON 格式发送数据。

<?php
echo '{"query": {"count": 2,"created": "2013-06-04T22:50:08Z","lang": "en-US","results": {"result":[{"Title" : "Giovannis Pizzeria","Phone" : "(408) 734-4221","Rating": {"AverageRating": "4"}},{"Title" : "Pizza","Phone" : "(800) 555-1212","Rating": {"AverageRating":"NaN"}}]}}}';
?>

我找不到错误在哪里。谁能帮我。?

标签: javascriptgridyuiyui3

解决方案


您的 PHP 看起来不像在返回 JSON 数据。尝试这个?

<?php
    $data = {"query": {"count": 2,"created": "2013-06-04T22:50:08Z","lang": "en-US","results": {"result":[{"Title" : "Giovannis Pizzeria","Phone" : "(408) 734-4221","Rating": {"AverageRating": "4"}},{"Title" : "Pizza","Phone" : "(800) 555-1212","Rating": {"AverageRating":"NaN"}}]}}};

    header('Content-Type: application/json');

    echo json_encode($data);

推荐阅读