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();
}
});
}