3
回答
后台action的数据是json格式,在控制台以及firebug中看到都是有的,但就是不在combobox中展现数据?急,求各位大神指导,已被这个问题困扰好久了

action层中的代码:

private String comboJson;

public String getComboJson() {
		return comboJson;
	}

	public void setComboJson(String comboJson) {
		this.comboJson = comboJson;
	}

public String accquireDataTypeData() throws TNBusinessException{
		String comboJson = "{total:3,rows:[{"+
				"tNDataTPId:'01',DataTpName:'南京'},"+
				"{tNDataTPId:'02',DataTpName:'镇江'},"+
				"{tNDataTPId:'03',DataTpName:'泰州'}"+
				"]}";
		setComboJson(comboJson);
		System.out.println(comboJson);
		return "combo/DataType";
	}



控制台打印结果为:

firebug的结果:

js代码如下:

Ext.define("dataTypeStore",{
        extend:"Ext.data.Model",
        fields:[{name:'DataTpName',mapping:'DataTpName'}, {name:'tNDataTPId',mapping:'tNDataTPId'}]
    });
    
    var dataTypeData = Ext.create("Ext.data.JsonStore",{
            model:"dataTypeStore",
            
            proxy: new Ext.data.HttpProxy({  
               url: 'test/test!accquireDataTypeData.action'//请求路径  
              }), )
            
        });
{
                                                columnWidth : .25,
                                                xtype: 'combobox',
                                                name:"combo1",
                                                id:"combo"+index,
                                                margin: '5 10 5 10',
                                                //width: 262,
                                                fieldLabel: 'Data Type',
                                                labelWidth: 80,
                                                mode:"remote",//[local|remote]
                                                triggerAction  : 'all',
                                                valueField:"tNDataTPId",
                                                displayField:"DataTpName",
                                                store: dataTypeData,
                                                //lazyRender:true,
                                                //width:300,
                                                typeAhead: true,
                                                //selectOnFocus:true,
                                                allowBlank:false,
                                               
                                                             }
                                                }
                                            }
不知道是否是json数据格式的问题,还是怎么了,每次点击下拉框,都无数据展示,效果如下图:

求各位大神帮忙,小女子感激不尽~

举报
飞叶er
发帖于4年前 3回/1K+阅
共有3个答案 最后回答: 4年前
应该是格式不对。你去搜索一个 Json格式话。把你返回的数据格式化一下。看是不是你想要的JSON数据。如果是你想要的数据。先把这个数据静态的放在EXT里。看下拉能否显示。。
--- 共有 7 条评论 ---
飞叶er回复 @大大菠萝 : 还有你给我的那个格式化网站,也可以检验json数据是否格式正确的,错误的话它不给格式化 4年前 回复
飞叶er回复 @大大菠萝 : 那个。。。能不能给个QQ号,或者邮箱也可以,我是新手,怕有些问题问出来会被笑话,想私聊 4年前 回复
__loong回复 @飞叶er : 我给你的那个网站只是格式化一下你的JSON数据。让数据好看点。其实数据的内容是没有变的。如果静态有内容。可能是你接受数据的时候存在一些问题。你可以试试ALERT一下。对比一下数据,或者格式化一下firebug的看看? 4年前 回复
飞叶er回复 @大大菠萝 : 你好,我按照你给的网址,把数据转换为正确的json格式了,放入静态的页面,是能展现出来的,但一从后台调用,就不展现数据,只有下拉框体。。。。 4年前 回复
__loong回复 @飞叶er : 而且 控制台跟firebug是同一个数据 4年前 回复

数据格式不对,你这个是要加载在combobox的数据,total,rows什么的没用,可以去掉,形成这样的json:{comboJson:[{data1},{data2},{data3}]},同时proxy里面加个属性reader:{type:'json',root:'comboJson'}

--- 共有 4 条评论 ---
飞叶er回复 @rk_icc : 可能是我刚刚的那个combobox有问题,我在下面的那个combobox试了下,load了那样的json数据,数据展现了。这种做法不就是将数据在js内写死嘛,之前我写死的时候,是能展现数据的,主要是如果从后台传过来的话,它就不展现,是咋回事呀?求救求救~ 4年前 回复
飞叶er回复 @rk_icc : 你好,我按照你的说法load了那个数据,不展现数据,还报了这样的错:Ext.Error: You are using a ServerProxy but have not supplied it with a url. 4年前 回复
rk_iccdataTypeData.loadData([{data1},{data2},...])先看看能不能显示数据 4年前 回复
飞叶er你好,我按照你说的修改了,这次点击下拉框不是只有一条阴影了,能出现框体,但无数据,请问是咋回事?我已经纠结这个问题很久了,能不能帮帮忙,帮我找找这个错误。。。我是新手,已经纠结很久了。。。先提前说谢谢啦 4年前 回复

该问题已解决,错误原因是我从后台传至前台的json数据格式有问题,传到前台之后,还要注意前后台name的对应,我就是有一个大小写没对应,导致数据不展现。

在此,谢谢大大菠萝啦,很细心很细心地给我解惑呢~谢谢谢谢!……

顶部