Sencha ExtJS – Ajax Request – REST Json

Sencha ExtJS

Sencha ExtJS

 

Para crear un ajax request usando un servicio web de tipo Rest JSON primero tendriamos un servicio del lado del servidor por ejemplo uno en Java con Spring así:



/**
*
*/
@RequestMapping(method = {RequestMethod.POST}, value = "/enviarCorreo")
public ModelAndView enviarCorreo(
ServletRequest request, ServletResponse response) {
ModelAndView retorno = new ModelAndView();
if (sessionInActiva()) {
retorno.addObject("success", false);
retorno.addObject("message", "No tiene una sesión activa");
return retorno;
}
boolean success = false;
String message = null;

try {

String record = request.getParameter("record");
logger.info("Records for correo " + record);

JSONObject recordJson = new JSONObject(record);
JSONArray listaContinuan = recordJson.getJSONArray("continuan");
JSONArray descartados = recordJson.getJSONArray("descartados");
Long etapa = recordJson.getLong("etapa");
Long codigoRequisicion = recordJson.getLong("codigoRequisicion");
logger.warn("Se envia correo los candidatos de la requisición "+codigoRequisicion+" en la etapa "+etapa);

for(int i = 0; i < listaContinuan.length(); i++){ logger.warn(i + " -> "+listaContinuan.getJSONObject(i).getLong("codCandidato"));
}

success = true;
message = "Se ha enviado el correo correctamente";
} catch (Exception e) {
logger.error("Error", e);
success = false;
message = "Error inesperado en el servidor";
} finally {
}

retorno.addObject("success", success);
retorno.addObject("message", message);

return retorno;
}


Luego creamos la petición Ajax en ExtJs así:



if(selectedContinua.length===0 && selectedDescarte.length===0){
    Ext.Msg.alert('Alerta', 'Debe elegir al menos un candidato a enviar el correo');
}else{
    var objeto = {
           codigoRequisicion : vista.getRequisicion(),
           continuan : selectedContinua,
           descartados : selectedDescarte,
           etapa : vista.getEtapa()
    };
    //console.log('paso 4');

    var recordToSend = Ext.encode(objeto);
    //console.log('paso 5');
    vista.getEl().mask("Procesando...");
    Ext.Ajax.request({
           url:'../html/etapaCandidato/enviarCorreo.json',
           params :{record : recordToSend},
           method: 'POST',
           success: function(response){
               var result = Ext.decode(response.responseText);
               var success=result.success;
               var message=result.message;
               if(success===true){
                   Ext.MessageBox.show({
                        title: 'Info',
                        msg: message,
                        buttons: Ext.MessageBox.OK,
                        //animateTarget: btn,
                        scope: this,
                        //fn: this.showResult,
                        icon: Ext.MessageBox.INFO
                   });                   
               }else{
                   Ext.MessageBox.show({
                        title: 'Alerta',
                        msg: message,
                        buttons: Ext.MessageBox.OK,
                        //animateTarget: btn,
                        scope: this,
                        //fn: this.showResult,
                        icon: Ext.MessageBox.WARNING
                   });
               }
               vista.getEl().unmask();
               vista.hide();//cierro ventana
           },
           failure: function(response)
           {
               console.log(response.responseText);
               var result = Ext.decode(response.responseText);
               var message=result.message;
               Ext.MessageBox.show({
                    title: 'Alerta',
                    msg: message,
                    buttons: Ext.MessageBox.OK,
                    //animateTarget: btn,
                    scope: this,
                    //fn: this.showResult,
                    icon: Ext.MessageBox.WARNING
               });
               vista.getEl().unmask();
           }
    });
}

También te podría gustar...

Deja un comentario