0

我有一个像这样的远程数据源,

var datasource = new kendo.data.DataSource({
    autoSync: false,
    batch: true,
    transport: {
        read: {
            url: "some_url",
            dataType: "json"
        }
    },
    serverFiltering: true,
    serverGrouping: true,
    serverPaging: false,
    page: 1,
    pageSize: 10,
    schema: {
        data: "results",
        total: "total",
        model: {
            id: "id"
        }
    }    
});

我想像这样从服务器端获得一个额外的价值。

    $response = array(
        'results' => $product_alerts,
        'total'   => $total,
        'total_approved_products'  => 27
    );
    echo json_encode($response);
    exit;   

无论如何我可以在 ClientSide 中获得 total_approved_products 的值吗?

非常感谢

4

2 回答 2

4

schema在定义中添加一个parse您提取的函数total_approved_products以及您想要的任何内容。例子:

schema         : {
    data : "results",
    total: "total",
    model: {
        id: "id"
    },
    parse: function (d) {
        // Get total_approved_products and display alert.
        alert(d.total_approved_products);
        // Return data in order to be included in the `DataSource.data`
        return d;
    }
}
于 2013-05-15T10:00:06.587 回答
2

以下是@OnaBai 解决方案的替代方案。两种解决方案都不是完美的,但是如果您实现了读取/更新/创建/删除,那么在解析时获取额外的对象是危险的,它们的响应对象也会命中解析并且您的 total_approved_products 很可能不存在。我建议在读取数据源时使用完整事件。

read: {
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: _op.serviceBaseUrl + "ReadX",
                    complete: function (jqXhr, textStatus) {
                            var result = jQuery.parseJSON(jqXhr.responseText);
                            alert(result.d.total_approved_products);
                     }
        }
于 2013-05-15T16:29:23.640 回答