昨天在一个项目当中发现ext的JsonStore在IE的某些状况下并不能够自动从后台的Action获取json数据,问题原因到现在也没有查清楚。在本机的开发环境下对外发布服务一切正常,但是部署到公司的单元测试环境后,还是有些主机通过IE无法访问(用其他的浏览器比如火狐很正常)。
这里需要记录的就是问题的部分解决,原来通过本机设置JsonStore的autoLoad为true的时候,对外发布会一部分主机IE访问不正常,而改成了手动load数据,那么通过自己的开发环境对外发布服务一切正常。
typeStore =new Ext.data.JsonStore({
autoLoad:true,
url: root+'/issueType.do?method=getTypeList',
root: 'data',
fields:['typeId','typeName','typeDesc','displayOrder']
});
这是原来设置的一个JsonStore ,设置的属性autoLoad:true 让这个页面被加载的时候,自动地通过url为root+'/issueType.do?method=getTypeList' 来从后台的Action加载数据,通过解析json数据来绘制前台。也就是这个设定在一部分IE浏览器下不能够正常实现。
typeStore =new Ext.data.JsonStore({
autoLoad:false,'displayOrder']
});
然后手动的拉数据来自于另外地方调用typeStore.load();将全部的init函数贴出来
function to_init(){
Ext.QuickTips.init();
typeRecord = Ext.data.Record.create([
{name: "typeId",type: 'string'},
{name: "typeName",type:'string'},
{name: "typeDesc",
{name: "displayOrder",type:'string'}
]);
typeStore =new Ext.data.JsonStore({
autoLoad:false,'displayOrder']
});
//alert(typeStore.+"-----------");
var colModel = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
{
header: "问题类型名称",
dataIndex:'typeName',
width: 300,
sortable: true,
renderer:"htmlEncode",
editor:new Ext.form.TextField({
allowBlank:false
})
},{
header: "问题类型描述",
dataIndex:'typeDesc',
width: 400,
editor:new Ext.form.TextField({
})
},{
header: "显示顺序",
dataIndex:'displayOrder',
width: 100,
editor:new Ext.form.NumberField({
allowBlank:false,
allowDecimals:false,
allowNegative:false,
style:'text-align:left;'
})
},
{ header: "删除",dataIndex:'typeName',width: 80,sortable: false,renderer:showDeleteUrl}
]);
typeGrid = new Ext.grid.EditorGridPanel({
id:'typeGrid',
title:'问题类型管理',
loadMask: {msg:'<bean:message bundle="common" key="js.message.loading"/>'},
trackMouSEOver:true,
stripeRows:true,
frame:true,
clicksToEdit: 1,
store: typeStore,
cm:colModel,
iconCls:'icon_grid',
listeners:{//listeners
afteredit:function(e){//if-5
if(e.column==3){//if-4
if(!(e.record.get('displayOrder')!='0'&&e.record.get('displayOrder')=='')){//if-3
for(var i=0;i<typeStore.getCount();i++){//for-1
var rec=typeStore.getAt(i);
if(!(rec.get('displayOrder')!='0'&&rec.get('displayOrder')=='')){//if-2
//if-1 if(e.row!=i&&e.record.get('displayOrder')==rec.get('displayOrder')){ Ext.Msg.alert('<bean:message bundle="common" key="js.message.systemInfo"/>','与第【'+(i+1)+'】行显示顺序重复!'); if(e.column==3 ){ e.record.set('displayOrder',''); } break; }//if-1 }//if-2 }//for-1 }//if-3 }//if-4 }//if-5 },//listeners tbar:[{ text:'<bean:message bundle="common" key="btn.add"/>',iconCls:'icon_add',handler:function(){ var myNewRecord = new typeRecord({ typeId: '',typeName: '',typeDesc:'',displayOrder:'' }); typeStore.add(myNewRecord); } }] }); mainPanel = new Ext.Panel({ layout:'border',frame:true,buttons:[ { text:'<bean:message bundle="common" key="btn.save"/>',handler:function(){ toSave(); } },{ text:'<bean:message bundle="common" key="btn.reset"/>',handler:function(){ Ext.getCmp('typeGrid').getStore().reload(); } } ],buttonAlign:'center',items:[{ region:'center',layout:'fit',autoScroll:true,items:typeGrid }] }); viewport = new Ext.Viewport({ layout:'fit',id:'viewport',items:mainPanel }); typeStore.load(); };