1. extjs 控件中拿取通过ajax传过来的json数据问题
checkBoxPanel 中增加事件监听,在处理函数是用ajax调用后台action,
Ext.Ajax.request({
//code...,
success:function(response){
var data = Ext.decode(response.responseText);//这样能取到值,如果是list的话传过版来转化后应该是数组了。权里面再是对象。最后再给checkBoxPanel赋值
}
});
2. 大师傅是否经常会遇到下面Extjs页面请求后台数据的时候,页面超时的情况,该如何解决
每个Ext.Ajax.request都有个属性
timeout : Number
The timeout in milliseconds to be used for this request. Defaults to 30 seconds.
普通的请求使用超时属性是这样
Ext.Ajax.request({
url: 'ajax_demo/sample.json',
success: function(response, opts) {
var obj = Ext.decode(response.responseText);
console.dir(obj);
},
failure: function(response, opts) {
console.log('server-side failure with status code ' + response.status);
},
timeout:3000000
});
store的请求则是这样
var myStore = Ext.create('Ext.data.Store', {
model: 'User',
proxy: {
type: 'ajax',
url: '/users.json',
reader: {
type: 'json',
root: 'users'
},
timeout:3000000
},
autoLoad: true
});
3. 关于Extjs的EditGrid问题
楼上的兄弟说的也可行,那是一个个数据单独提交的方法,这种方法比较耗程序性能,假如数据量不大可以用这种
,另外也可以批量提交修改: 1,先用 grid.getStore();取正庆到 store , 2 用for循环把修燃陆改过的store里的记录取到,放入一个数组里var items[] , 3 把 items 数据用 Ext.decode(items); 转成json string数据, 把此数据作为参数传到 action 中, 4 在action中 用 Example[] examples = gson.fromJson(itemParams, Example[].class); 方法把 json 数据转成对象, 这里 Example 是要操作的举段握对象, gson是 com.google.gson.Gson , 转成对象就可以对修改的对象进行保存操作了
4. extjs 怎样从数据库或后台中获取值给form填充默认值
form 中的元素用数组,然后用后台传来的 json 给 元素 setValue()
vararr1=newArray();
arr1['冲启id']=new=newExt.form.TextField({name:'id',fieldLabel:'id',value:0});
arr1['name']=newExt.form.TextField({name:'name',fieldLabel:'姓名Name',value:""});
arr1['email']=newExt.form.TextField({name:'email',fieldLabel:'电邮地址Email',value:""});
varformset=newExt.FormPanel({
frame:true,
trackResetOnLoad:false,
defaults:{labelAlign:'right',labelWidth:60,数档frame:true,layout:'form'},
fields_arr:arr1 ,
items:[this.fields_arr['id'],
this.fields_arr['name'],
this.fields_arr['email']
],
refrefield:function(config){
for(varkeyinconfig){
if(this.fields_arr[key]!==undefined){
this.fields_arr[key].setValue(config[key]);
}
}
},
});
Ext.Ajax.request({
url:'user_save.action',
method:'post',
success:function(response,options){
varo=Ext.util.JSON.decode(response.responseText);
formset.refrefield(0);//这里给字段赋值
薯判乱},
failure:function(){
}
});
}
5. Extjs Ajax异步请求时乱码如何解决
url=encodeURI(encodeURI(url));前台转码一次,拦侍告java.net.URLDecoder.decode(paperTitle,"谈春UTF-8");后简明台也转码下,试试。
6. Extjs项目中接收json数据点击某个下拉框实现回显数据
使用回调函数对 年假字段赋值.
varholidayType=newExt.form.ComboBox({
store:newExt.data.SimpleStore({ fields:['value','text'],
data:[['0','事假'],['1','病假'],['2','年假']] }),
fieldLabel:'性别',
displayField:'text',
valueField:'value',
triggerAction:'all',
allowBlank:false,
width:86,
editable:false,
mode:'local',
listeners:{
select:function(){
varcomb=this;
if(this.getValue()=="年假"){
Ext.Ajax.request({
url:url,
method:'POST',async:false,scope:this,
params:params,
success:function(response,options){
//alert(response.responseText);
varrsInfo=Ext.util.JSON.decode(response.responseText);
varhaveDays=comb.ownerCt.getComponent('havDays')
//注意这里的引用方式
if(rsInfo.success){
haveDays.setValue(rsInfo.data);
}else{
}
}),
}
},
},
}
});
varhavDays=newExt.form.NumberField({name:'havDays',itemId:'havDays',
fieldLabel:'年假剩余天数',
value:0,});
7. extjs 4.1 怎么不能使用 Ext.util.JSON.decode
Ext.JSON.decode就可以了,只是去掉了util
8. extjs有没有把字符串转换成json数据的方法
有的,extjs 可以野困使用 Ext.util.JSON.decode(字颂源念符裂者串) 的方式,将符合JSON规则的字符串,转换为 json对象。
Ext.util.JSON.decode 可以使用缩写 Ext.decode 代替,更为简洁。
9. Extjs之两个JS页面直接的对象传递问题
同一页面的JS上下文是相同作用域的,
你的应该是不同页面间传值、所以借内用了cookies;
//接收页面:
varrecord=Ext.util.Cookies.get("valueJson");
//然后容拿个record列名自己看看
varobj=Ext.decode(record);
alert(obj.colName);
10. ExtJs里面如何解析本地Json字符串
使用Ext.JSON.decode(jsonStr)可以将json字符串转化成对象,然后将对象赋给store的内data属性即可,简单例子容
Ext.create('Ext.data.Store', {
fields: [
{name: 'roomtype', type: 'string'}
],
data : Ext.JSON.decode('{"root": [{"roomtype":"00"},{"roomtype":"11"}]}').root
});