ExtJs的Combox从后台获取数据无法显示出来,请大虾们帮我看下!

前台js代码
[code="java"]
var projectStore = new Ext.data.JsonStore({

url : 'http://localhost:8080/HyitSystem/provinceData.action',//这里是数据源,这地方我用的ajax映射到后台的service方法,返回上面的JSON串数据

root : 'value',//这里的value对应上传JSON串中的value

fields : ['id','province']//这里的两个变量也分别对应上面JSON串中value数组内的key

});
var projectCombo = new Ext.form.ComboBox({

emptyText : "请选择",

store : projectStore,

valueField : "id",//这是实际的值可以通过getValue()方法取出来

displayField : "province",//这是显示值可以用getRawValue()方法取出来

mode : "remote",//这里是remote代表取得远程服务器的值,如果为local则是取得本地的值

triggerAction : "all",

editable : false,

allowBlank : false,
applyTo:"comboProvince",
hiddenName:"typeValue",
listeners : {

'select': function() {

alert(projectCombo.getRawValue());
}
}
});
[/code]
后台返回json格式的数据如下:
{"result":false,"value":"[{'id':'1','province':'河南省'},{'id':'2','province':'河北省'},{'id':'3','province':'山西省'},{'id':'4','province':'山东省'},{'id':'5','province':'湖南省'},{'id':'6','province':'湖北省'},{'id':'7','province':'四川省'},{'id':'8','province':'辽宁省'},{'id':'9','province':'吉林省'},{'id':'10','province':'黑龙江省'},{'id':'11','province':'广东省'},{'id':'12','province':'浙江省'},{'id':'13','province':'福建省'},{'id':'14','province':'甘肃省'},{'id':'15','province':'江西省'},{'id':'16','province':'陕西省'},{'id':'17','province':'海南省'},{'id':'18','province':'江苏省'},{'id':'19','province':'安徽省'},{'id':'20','province':'云南省'},{'id':'21','province':'贵州省'},{'id':'22','province':'天津市'},{'id':'23','province':'北京市'},{'id':'24','province':'上海市'},{'id':'25','province':'重庆市'},{'id':'26','province':'新疆维吾尔族自治区'},{'id':'27','province':'内蒙古自治区'},{'id':'28','province':'西藏自治区'},{'id':'29','province':'广西壮族自治区'},{'id':'30','province':'宁夏回族自治区'},{'id':'31','province':'香港特别行政区'},{'id':'32','province':'澳门特别行政区'}]"}

结果就是combox能用,可以下拉,但是里面没有值,不知道什么原因,麻烦帮我看下!

2个回答

[code="java"] var category = new Ext.form.ComboBox({

emptyText : "请选择",

store : new Ext.data.JsonStore({

url : 'cmdb/sWCategoryListForCombo.html',//这里是数据源,这地方我用的ajax映射到后台的service方法,返回上面的JSON串数据

root : 'value',//这里的value对应上传JSON串中的value

fields : ['id','name']//这里的两个变量也分别对应上面JSON串中value数组内的key

}),

valueField : "id",//这是实际的值可以通过getValue()方法取出来

displayField : "name",//这是显示值可以用getRawValue()方法取出来

mode : "remote",//这里是remote代表取得远程服务器的值,如果为local则是取得本地的值

triggerAction : "all",

editable : false,

allowBlank : false,
// applyTo:"comboProvince",
hiddenName:"software.category.id",
listeners : {

}
});[/code]

我将你的代码拿到我们系统中测试是没有问题的,原因出在返回的数据上。
将"value":"[{'id'---中括号前面的“"”去掉即可显示数据。不然ext无法解析你的value值成一个json对象数据,它会当value的值是一个字符串。
另外给你一些建议,返回的数据中我的习惯是,{success:true,root:[{***},{***}]}。个人觉得公共标识用seccuss,元素的根标识用root以求统一。
希望以上回答对你有所帮助。

[code="javascript"]var category = new Ext.form.ComboBox({
anchor : '98%',
name : 'category',
hiddenName : 'software.category.id',
fieldLabel : $lang('cmdb.software.SoftwareAOE.category'),//'软件类别',
allowBlank : false,
displayField : 'text',
valueField : 'value',
editable : false,
triggerAction : 'all',
store : new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url: 'cmdb/sWCategoryListForCombo.html'}),
reader: new Ext.data.JsonReader({
root:'root'
},[{name: 'value', mapping: 'id'},{name: 'text', mapping: 'name'}]
)
}),
mode:'remote',
forceSelection:true,
blankText:$lang('cmdb.software.commom.blankText'),//'请选择 ... ',
emptyText:$lang('cmdb.software.commom.emptyText')//'请选择 ... '
});[/code]

贴一段我写的代码给你,有时间再帮你好好看看。现在开始工作。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问