匿名
2010-10-07
ExtJS里面的Ajax调用Servlet,Servlet返回JSON类型数据。HttpProxy里面的参数是添什么啊?
5
可以弹出response.responseText里面的数据,HttpProxy里面的参数是添什么啊?才能把数据绑定到comboBox中啊
补充:
E_data_Servlet_combobox = function() {
Ext.Ajax.request({
url:"/test/City_Data_Servlet", //Ajax调用的Servlet影射名称
success:function(response,config){
Ext.Msg.alert("信息",response.responseText);
var proxy=new Ext.data.HttpProxy({url:"/test/City_Data_Servlet"});//通过Ajax得到远程的数据
var City=Ext.data.Record.create( //定义行的逻辑结构
{name:"cid",type:"int",mapping:"cid"},
{name:"cname",type:"string",mapping:"cname"}
);
var reader=new Ext.data.JsonReader({},City);//用JSON来解析
var store=new Ext.data.Store({ //存储数据
proxy:proxy,
reader:reader
});
var combobox=new Ext.form.ComboBox({//下拉列表
renderTo:Ext.getBody(), //加载到 引入本JS的页面
store:store, //数据
displayField:"cname",//页面显示值绑定的映射名称
valueField:"cid",//页面真实显示值绑定的映射名称
mode:"remove", //设置数据来源 remove
triggerAction:"query",//自动查询功能
emptyText:"请选择省份" //选项为空时显示的文本
});
},
failure:function(){
Ext.MessageBox.alert("信息","请求失败.");
},
method:"post"
});
};
满意答案
完全看不懂,为什么要调用2次AJAX去访问后台
直接定义1个store去加载json数据就搞定了
给你写个例子
var store=new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : url //你要访问的后台URL
}),
reader : new Ext.data.JsonReader({
root : 'root', //与后台JSON内的定义保持一致
totalProperty : 'totalProperty' //与后台JSON内的定义保持一致
},
//一下为JSON内的字段定义
[{
name : 'id'
}, {
name : 'name'
}]),
});
比如这个JSON格式为
String Json="[
totalProperty:2,//总记录条数 可以不写 但是若用GRID分页此项不可少
root:[
{id:1,name:'tom'},{id:2,name:'jack'}
]
]"
//让Store加载数据
stroe.load()
//最后将这个Store放进combox
var combox=Ext.form.combox({
store:store, //数据
displayField:"name", valueField:"id",
mode:"local",
editable : false,
triggerAction : 'all',
hiddenName :"id"
})
+1
已赞过
提问者
的感言:
呵呵,谢谢最近很忙一直都没继续学习,我想你的答案应该是对的,有时间我再去琢磨琢磨
2010-10-21