gpt4 book ai didi

javascript - IE 中的 ExtJS 组合框问题

转载 作者:行者123 更新时间:2023-11-30 10:56:36 24 4
gpt4 key购买 nike

我有一个 ExtJS 组合框,它后面有一个远程数据存储。在所有浏览器中,它工作正常,除了在 IE(我测试过的所有版本)中,组合框瞬间扩展,显示“正在加载”图标,然后再次消失。在此之后再次单击它不再使它展开。基本上:它没有被填充。

在服务器端,一切正常。到达 Controller 操作(使用 ASP.NET MVC),它返回 Json 数据。 Json 格式正确(所有其他浏览器至少吞下它)。

奇怪的是,当我在 Controller 操作中放置断点时,JsonStore 会在客户端正确填充。这对我来说表明某种时间问题。

另一件奇怪的事情是,每隔一段时间,它就可以正常工作。也许是因为偶然或什么的时机恰到好处。

如果我将组合框模式设置为“本地”并在远程数据存储上强制执行 .load(),它在 IE 中也能正常工作。

这个问题存在于所有为我们使用远程数据存储的组合框中。

我有以下 JsonStore:

  var companies = new Ext.data.JsonStore({
url: '/Company/GetCompanies/',
root: 'companies',
fields: [
{ name: 'CompanyID'},
{ name: 'CompanyName'}]
});

组合框:

new Ext.form.ComboBox({
fieldLabel: 'Company',
typeAhead: false,
triggerAction: 'all',
valueField: 'CompanyID',
hiddenName: 'CompanyID',
displayField: 'CompanyName',
mode: 'remote',
lazyRender: true,
store: companies,
allowBlank: true,
editable: false,
listeners: {
'focus': function(){
if(companies.data.length > 0)
{
debugger; // This is only ever fired after the aforementioned breakpoint method.
}
}
}
})

Controller返回的Json:

{"companies":[{"CompanyID":1,"CompanyName":"Test"},{"CompanyID":2,"CompanyName":"Test1"
},{"CompanyID":3,"CompanyName":"Test2"}]}

最佳答案

数字,我在发布有关它的问题后几分钟就制定了解决方案。

我切换到 Store 而不是 JsonStore 并指定了代理的 method: 'GET' 属性并且它起作用了。我不知道为什么这确实有效,也不知道为什么只有 IE 有问题。我的 Controller 操作同时接受 GET 和 POST,所以不是这样。

商店:

var companies = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({ url: '/Company/GetCompanies/', method: 'GET' }),
reader: new Ext.data.JsonReader({ root: 'companies' }, [{ name: 'CompanyID', mapping: 'CompanyID' }, { name: 'CompanyName', mapping: 'CompanyName'}])
});

关于javascript - IE 中的 ExtJS 组合框问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/681995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com