所以我在使用带有serverFiltering的odata的kendo web组合框中遇到了一个非常奇怪的问题:true
如果我在localhost服务器上使用它,它会请求odata格式并且效果很好。如果它指向数据的外部服务器(使用CORS),则无关紧要。无论哪种方式,它都可以很好地工作,并以预期的方式获取数据等。
但是,只要我将它放在公共域上,使用相同的浏览器就会失败。并且以一种最古怪的方式失败:
它停止传递$ filter属性。并且它停止调用scheme.data函数来正确地解析结果(由于没有过滤器,它成功调用并获取所有结果集)。
此外,它不会将结果应用于下拉列表,因此它会保持为空。
绝对不会抛出任何javascript错误。将断点放在schema.data的函数上会导致它在IE或chrome中永远不会被命中。更改事件和错误事件也是如此。什么都没有。
以下是数据来源:
dsContacts = new kendo.data.DataSource({
type: "odata",
serverPaging: true,
serverSorting: true,
serverFiltering: true,
pageSize: 20,
transport: {
read: {
url: User.serviceUrl + "/contact/list"
}
},
schema: {
data: function (data) {
if(dsLinks.selectedItem().LinkedToContactID() && dsLinks.selectedItem().LinkedToContact()) {
data.results.push({
ID: dsLinks.selectedItem().LinkedToContactID(),
Name: dsLinks.selectedItem().LinkedToContact()
});
}
return data.results;
}
},
error: function (e) {
tradepointUtilities.ShowErrorAlert("Contact List Get", e);
}
});
组合定义为:
$("#cbo").kendoComboBox({
dataTextField: "ID",
dataValueField: "Name",
suggest: true,
datasource: dsContacts,
filter: "contains",
autoBind: false,
delay: 300,
minLength: 3
});
再次,在localhost上完美运行,在所有浏览器中都以完全相同的方式在生产中失败,没有任何错误。
想法?