Extjs4,等待ajax请求
我应该在单击一个按钮的过程中运行多个ajax请求,但是所有请求都应该等到第一个请求被执行。我已尝试将所有请求放入第一个请求的成功回调中,但出现以下错误: 类型错误:o未定义Extjs4,等待ajax请求,extjs4,wait,ajax-request,Extjs4,Wait,Ajax Request,我应该在单击一个按钮的过程中运行多个ajax请求,但是所有请求都应该等到第一个请求被执行。我已尝试将所有请求放入第一个请求的成功回调中,但出现以下错误: 类型错误:o未定义 返回o.id 只执行第一个请求。 这是我的代码: if(form1.isValid()) { form1.submit(me._genFormSubmitAction('my_DB','my_Action', function() { conso
返回o.id 只执行第一个请求。
这是我的代码:
if(form1.isValid()) {
form1.submit(me._genFormSubmitAction('my_DB','my_Action', function() {
console.log('form1 success');
//Submit Form2
if(form2.isValid()) {
form2.submit(me._genFormSubmitAction('my_DB','my_Action', function() {
console.log('form2 success');
}));
//Submit Form3
....
_genFormSubmitAction:
_genFormSubmitAction: function(db,action, successCallback) {
var me = this;
return {
clientValidation : true,
url : me.getApplication().apiUrl,
waitMsg : '<p align=right>..الرجاء الإنتظار</p>',
async:false,
params : {
_module: 'administrationcassocial',
_action: action,
_db:db
},
success : function(form, action) {
if(action.result.success == true) {
Ext.callback(successCallback, me);
form.owner.destroy();
} else {
console.log('url=',url);
Ext.Msg.alert(action.result.error, action.result.errormessages.join("\n"));
}
},
failure : function(form, action) {
switch (action.failureType) {
case Ext.form.action.Action.CLIENT_INVALID:
Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
break;
case Ext.form.action.Action.CONNECT_FAILURE:
Ext.Msg.alert('Failure', 'Ajax communication failed');
break;
case Ext.form.action.Action.SERVER_INVALID:
Ext.Msg.alert(action.result.error, action.result.errormessages.join("\n"));
}
}
};
}
\u genFormSubmitAction:函数(db、action、successCallback){
var me=这个;
返回{
clientValidation:对,
url:me.getApplication().apiUrl,
waitMsg:“。p>”,
async:false,
参数:{
_模块:“管理社会学”,
_行动:行动,
_分贝:分贝
},
成功:功能(形式、行动){
if(action.result.success==true){
Ext.callback(successCallback,me);
form.owner.destroy();
}否则{
log('url=',url);
Ext.Msg.alert(action.result.error、action.result.errormessages.join(“\n”);
}
},
失败:功能(形式、动作){
开关(动作故障类型){
案例Ext.form.action.action.CLIENT_无效:
Ext.Msg.alert('Failure','Form fields不能使用无效值提交');
打破
案例Ext.form.action.action.CONNECT\u失败:
Ext.Msg.alert(“失败”,“Ajax通信失败”);
打破
案例Ext.form.action.action.SERVER_无效:
Ext.Msg.alert(action.result.error、action.result.errormessages.join(“\n”);
}
}
};
}
这是一个范围问题
form1.submit的回调发生在回调自己的范围内,因此它不知道什么是form2
您可以尝试:
if(form1.isValid()) {
var me = this;
form1.submit(me._genFormSubmitAction('my_DB','my_Action', function() {
console.log('form1 success');
//Submit Form2
if( me.form2.isValid() ) {
form2.submit(me._genFormSubmitAction('my_DB','my_Action', function() {
console.log('form2 success');
}));
}
}));
}
或者我认为更合适的解决方案:
// Added aScope var
_genFormSubmitAction: function( db,action, aScope, successCallback ) {
var me = this;
return {
// ...
scope: aScope
}
}
然后你打电话:
form1.submit(me._genFormSubmitAction('my_DB','my_Action', this, function() {
}));
我已经试过你的第一个建议(问题中已经提到)。关于第二个命题,我还没有理解。