En ExtJS 3.2.4 al llamar un proceso PHP que tarda más de 30 segundos vía Ajax, el proceso se cancela automaticamente sin razón aparente.
Despues de multiples intentos y pruebas, he logrado cambiar el valor del timeOut con la siguiente línea al inicio del programa.
Espero que les sea de utilidad.
Happy Coding!
handler:function() {
var titulo="ENVIA FORMULARIO";
if (frm.form.isValid()){
var campo1 = Ext.getCmp('campo1').getValue();
var campo2 = Ext.getCmp('campo2').getValue();
var campo3 = Ext.getCmp('campo3').getValue();
var conn = new Ext.data.Connection();
Ext.MessageBox.wait('Por favor espere...', titulo);
conn.request({
url : 'fileCRUD.php'
, params: {
'campo1' :campo1
,'campo2' :campo2
,'campo3' :campo3
}
, success: function (result, request ) {
Ext.MessageBox.hide();
var jsonData = Ext.util.JSON.decode(result.responseText);
Ext.Msg.show({
title: titulo,
msg: jsonData.msg,
buttons: Ext.Msg.OK,
animEl: 'elId',
icon: Ext.MessageBox.INFO
});
myAppStore.reload();
myAppWin.close();
} //end of success
,failure: function (result, request ) {
Ext.MessageBox.hide();
var jsonData = Ext.util.JSON.decode(result.responseText);
Ext.Msg.show({
title: 'Error: ' + titulo,
msg: 'Hubo un error al realizar ' + titulo + jsonData.statusText,
buttons: Ext.Msg.OK,
animEl: 'elId',
icon: Ext.MessageBox.ERROR
});
} //end of failure
}); //end of conn.request
} //end if
} //end of handler
| Request Ajax = Aborted |
Despues de investigar un poco, descubrí que el proceso se cancela debido a que valor por default del timeOut (tiempo de espera) es de 30000 milisegundos . Intente cambiar el valor del tiempo de espera (timeOut): En todas las llamadas Ajax:
Ext.ajax.timeOut = 600000 /* No funciona */Al realizar la conexión:
Ext.Connection.timeOut = 600000 /* No Funciona */En el formulario:
Ext.Form.timeOut = 600000 /* No Funciona */Sin embargo este valor no se modificaba a nivel global.
Despues de multiples intentos y pruebas, he logrado cambiar el valor del timeOut con la siguiente línea al inicio del programa.
/* SI FUNCIONA */ Ext.data.Connection.prototype.timeout =30000; // 600 segundos; 5 minutos;
Espero que les sea de utilidad.
Happy Coding!
Comentarios
ENORMEMENTE AGRADECIDO
graciaa