szz0429 2011-01-07 18:55
浏览 424
已采纳

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条回答 默认 最新

  • 御风24311 2011-01-10 11:10
    关注

    [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以求统一。
    希望以上回答对你有所帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 github训练的模型参数无法下载
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题