为Ext.form.Action.Submit增加JSON/xml数据发送

本文介绍了一种通过重写Ext3中的FormPanel组件来实现JSON或XML数据提交的方法。这种方法涉及对Ext.form.Action.Submit进行扩展,允许直接在请求中包含JSON或XML数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两日搞了一下Ext3,发现Ext.form.FormPanel居然不能发送JSON/xml数据到服务端,不知道是不是我没有找到方法,郁闷了一天。
最简单的办法就是,直接重写Ext.form.Action.Submit.run
在request参数中配置有
jsonData或者xmlData就可以将json或者xml发送到服务端了

Ext.override(Ext.form.Action.Submit,{
run:function(){
var o = this.options,
method = this.getMethod(),
isGet = method == 'GET';
if(o.clientValidation === false || this.form.isValid()){
if (o.submitEmptyText === false) {
var fields = this.form.items,
emptyFields = [];
fields.each(function(f) {
if (f.el.getValue() == f.emptyText) {
emptyFields.push(f);
f.el.dom.value = "";
}
});
}

if(o.jsonData){
Ext.Ajax.request(Ext.apply(this.createCallback(o), {
url:this.getUrl(isGet),
method: method,
headers: o.headers,
jsonData:o.jsonData
}));
}else if(o.xmlData){
Ext.Ajax.request(Ext.apply(this.createCallback(o), {
url:this.getUrl(isGet),
method: method,
headers: o.headers,
xmlData:o.xmlData
}));
}else{
Ext.Ajax.request(Ext.apply(this.createCallback(o), {
form:this.form.el.dom,
url:this.getUrl(isGet),
method: method,
headers: o.headers,
params:!isGet ? this.getParams() : null,
isUpload: this.form.fileUpload
}));
}

if (o.submitEmptyText === false) {
Ext.each(emptyFields, function(f) {
if (f.applyEmptyText) {
f.applyEmptyText();
}
});
}
}else if (o.clientValidation !== false){ // client validation failed
this.failureType = Ext.form.Action.CLIENT_INVALID;
this.form.afterAction(this, false);
}
} return Ext.decode(response.responseText);
}
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值