所以我对剑道网络组合框有一个非常奇怪的问题,它带有 odata 和 serverFiltering: 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
});
同样,在本地主机上完美运行,在所有浏览器中以完全相同的方式在生产中失败,没有任何错误。
想法?