我有一个这样的远程数据源,
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的价值吗?
非常感谢
答案 0 :(得分: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;
}
}
答案 1 :(得分:2)
@ OnaBai解决方案的替代方案如下。这两种解决方案都不完美,但是如果你已经实现了read / update / create / delete,那么在解析时拾取额外的对象是危险的,它们的响应对象也会进行解析,你的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);
}
}