Javascript IE中的ExtJS组合框问题

Javascript IE中的ExtJS组合框问题,javascript,internet-explorer,extjs,Javascript,Internet Explorer,Extjs,我有一个ExtJS组合框,后面有一个远程数据存储。在所有浏览器中,它都可以正常工作,但在IE(我测试过的所有版本)中除外,在IE中,组合框会扩展一秒钟,显示一个“加载”图标,然后再次消失。在此之后再次单击它不会使其再扩展。基本上:它没有被填充 在服务器端,一切正常。到达控制器操作(使用ASP.NET MVC),返回Json数据。Json格式正确(至少所有其他浏览器都接受它) 奇怪的是,当我在控制器操作中放置断点时,JsonStore在客户端被正确填充。这对我来说意味着某种时间问题 另一件奇怪的事

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

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

奇怪的是,当我在控制器操作中放置断点时,JsonStore在客户端被正确填充。这对我来说意味着某种时间问题

另一件奇怪的事情是,每隔一段时间,它就会工作得很好。也许是因为偶然或其他原因,时机正好

如果我将combobox模式设置为“local”,并在远程数据存储上强制执行
.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.
          }
        }
    }
})
控制器返回的Json:

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

我在发布了一个问题几分钟后就找到了答案

我切换到存储区而不是JsonStore,并指定了代理的
方法:'GET'
属性,它成功了。我不知道为什么这会起作用,为什么只有IE有问题。我的控制器操作同时接受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'}])
});

我在发布了一个问题几分钟后就找到了答案

我切换到存储区而不是JsonStore,并指定了代理的
方法:'GET'
属性,它成功了。我不知道为什么这会起作用,为什么只有IE有问题。我的控制器操作同时接受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'}])
});

谢谢你,朱利安。。。我也遇到过同样的问题,你的解决方案很快就解决了!谢谢你,朱利安。。。我也遇到过同样的问题,你的解决方案很快就解决了!