error de validación
Hola soy nueva en esto de Extjs y tengo algunos problemas para validar mis campos tengo conflictos entre el maxValue y los mensajes que quiero que me mande si introduzco algun dato mal.
Este es mi codigo de mi archivo js:
MainLayout = function () { return { init: function () { Ext.BLANK_IMAGE_URL = BLANK_IMAGE_URL; Ext.QuickTips.init(); this.initLayout(); },
initLayout: function () {
var Correo = new Ext.form.TextField({ id: 'Correo', name: 'Correo', allowBlank: false, fieldLabel: 'Correo', width: 200, maxLength: 250, vtype: 'multiemail', vtypeText: 'Solo acepta correos' });
var Porciento = new Ext.form.NumberField({ id: 'Porcentaje', name: 'Porcentaje', allowBlank: false, fieldLabel: 'Porcentaje de aumento', allowDecimals: true, allowNegative: true, vtype: 'numeros', maxValue: 100 });
var Periodo = new Ext.form.NumberField({ id: 'periodo', name: 'Periodo', allowBlank: false, fieldLabel: 'Periodo de Mes', allowDecimals: false, minValue: 1, maxValue: 48 });
var Factor = new Ext.form.NumberField({ id: 'factor', name: 'Factor', allowBlank: false, fieldLabel: 'Factor', allowDecimals: true, decimalPrecision: 2, minValue: 1 });
var CorreoMultiset = new Ext.form.FieldSet({ items: [Correo, Porciento, Periodo, Factor] });
var boton1 = new Ext.Button({ text: 'cargar', handler: function () { multiCorreo.getForm().submit({ url: VIRTUAL_DIRECTORY + 'MultiCorreo/Datos', success: function (response, action) { var result = Ext.decode(action.response.responseText); if (result.success) { alert(result.msgbien); } else { alert(result.msg); } } , failure: function (response, action) { var error = Ext.decode(action.response.responseText); alert(error.msg); } }); } });
var multiCorreo = new Ext.form.FormPanel({ id: 'multiCorreo', name: 'multiCorreo', frame: true, title: 'MultiCorreo', allowBlank: true, items: [CorreoMultiset, boton1] });
var view = new Ext.Viewport({ id: 'principal', defaults: { border: false }, layout: 'fit', items: [multiCorreo] }); } }} ();Ext.EventManager.onDocumentReady(MainLayout.init, MainLayout, true);
Este es el de mi metodo JSON:
public JsonResult Datos(string Correo, decimal Porcentaje, int Periodo, decimal Factor) { bool success = true; try { if (success == true) { return Json(new { success = true, msgbien = "Datos obtenidos correctamente"
}); } else { return Json(new { success = false, msg = "Verifique que los datos sean correctos" }); } } catch (Exception e) { return Json(new { success = false, error = e.Message}); } }
y me presenta un error en lugar de mandarme el mensaje de que algun dato esta mal me envia este error:
TypeError: action.response is undefined
Este es mi codigo de mi archivo js:
MainLayout = function () { return { init: function () { Ext.BLANK_IMAGE_URL = BLANK_IMAGE_URL; Ext.QuickTips.init(); this.initLayout(); },
initLayout: function () {
var Correo = new Ext.form.TextField({ id: 'Correo', name: 'Correo', allowBlank: false, fieldLabel: 'Correo', width: 200, maxLength: 250, vtype: 'multiemail', vtypeText: 'Solo acepta correos' });
var Porciento = new Ext.form.NumberField({ id: 'Porcentaje', name: 'Porcentaje', allowBlank: false, fieldLabel: 'Porcentaje de aumento', allowDecimals: true, allowNegative: true, vtype: 'numeros', maxValue: 100 });
var Periodo = new Ext.form.NumberField({ id: 'periodo', name: 'Periodo', allowBlank: false, fieldLabel: 'Periodo de Mes', allowDecimals: false, minValue: 1, maxValue: 48 });
var Factor = new Ext.form.NumberField({ id: 'factor', name: 'Factor', allowBlank: false, fieldLabel: 'Factor', allowDecimals: true, decimalPrecision: 2, minValue: 1 });
var CorreoMultiset = new Ext.form.FieldSet({ items: [Correo, Porciento, Periodo, Factor] });
var boton1 = new Ext.Button({ text: 'cargar', handler: function () { multiCorreo.getForm().submit({ url: VIRTUAL_DIRECTORY + 'MultiCorreo/Datos', success: function (response, action) { var result = Ext.decode(action.response.responseText); if (result.success) { alert(result.msgbien); } else { alert(result.msg); } } , failure: function (response, action) { var error = Ext.decode(action.response.responseText); alert(error.msg); } }); } });
var multiCorreo = new Ext.form.FormPanel({ id: 'multiCorreo', name: 'multiCorreo', frame: true, title: 'MultiCorreo', allowBlank: true, items: [CorreoMultiset, boton1] });
var view = new Ext.Viewport({ id: 'principal', defaults: { border: false }, layout: 'fit', items: [multiCorreo] }); } }} ();Ext.EventManager.onDocumentReady(MainLayout.init, MainLayout, true);
Este es el de mi metodo JSON:
public JsonResult Datos(string Correo, decimal Porcentaje, int Periodo, decimal Factor) { bool success = true; try { if (success == true) { return Json(new { success = true, msgbien = "Datos obtenidos correctamente"
}); } else { return Json(new { success = false, msg = "Verifique que los datos sean correctos" }); } } catch (Exception e) { return Json(new { success = false, error = e.Message}); } }
y me presenta un error en lugar de mandarme el mensaje de que algun dato esta mal me envia este error:
TypeError: action.response is undefined
var error = Ext.decode(action.response.responseText);espero alguien pueda ayudarme gracias
El error te está diciendo que action.response no existe, intenta sacar el error de la siguiente manera:
var error = action.result.error;
Saludos
Este es mi codigo:
namespace Navistar.Web.Controllers{ public class MultiCorreoController : Controller { public readonly ILog logger; bool success = false;
public MultiCorreoController() { logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); logger.Debug("MultiCorreoController"); } public ActionResult MultiCorreo() { return View(); }
public JsonResult Datos(string Correo, decimal Porcentaje, int Periodo, decimal Factor) { if (Correo != null && Porcentaje < 100 && Periodo > 0 && Periodo < 49 && Factor > 1) { success = true; } else { return Json(new { success = false, msgmal = "Verifique que los datos sean correctos" }); } if (success == true) { try { return Json(new { success = true, msgbien = "Datos obtenidos correctamente" }); } catch (Exception e) { return Json(new { error = e.Message }); } }else{ return Json(new {success = false, sistema = "ERROR DE SISTEMA"} ); } } }}
/// <reference path="../../vswd-ext_2.2.js" />
MainLayout = function () { return { init: function () { Ext.BLANK_IMAGE_URL = BLANK_IMAGE_URL; Ext.QuickTips.init(); this.initLayout(); },
initLayout: function () {
var Correo = new Ext.form.TextField({ id: 'Correo', name: 'Correo', allowBlank: false, fieldLabel: 'Correo', width: 200, maxLength: 250, vtype: 'multiemail', vtypeText: 'Introduzca solo correo(s)' });
var Porciento = new Ext.form.NumberField({ id: 'Porcentaje', name: 'Porcentaje', allowBlank: false, fieldLabel: 'Porcentaje de aumento', allowDecimals: true, allowNegative: true, maxValue: 100, vtypeText: 'El valor maximo es de 100' });
var Periodo = new Ext.form.NumberField({ id: 'Periodo', name: 'Periodo', allowBlank: false, fieldLabel: 'Periodo de Mes', allowDecimals: false, vtypeText: 'Acepta valores entre 1 y 48', minValue: 1, maxValue: 48 });
var Factor = new Ext.form.NumberField({ id: 'factor', name: 'Factor', allowBlank: false, fieldLabel: 'Factor', allowDecimals: true, decimalPrecision: 2, vtypeText: 'El valor minimo es 1', minValue: 1 });
var CorreoMultiset = new Ext.form.FieldSet({ items: [Correo, Porciento, Periodo, Factor] });
var boton1 = new Ext.Button({ text: 'cargar', handler: function () { multiCorreo.getForm().submit({ url: VIRTUAL_DIRECTORY + 'MultiCorreo/Datos', success: function (response, action) { var result = Ext.decode(action.response.responseText); if (result.success = true) { alert(result.msgbien); } }, failure: function (response, action) { var error = Ext.decode(action.response.responseText); alert(error.msgmal); } }); } });
var multiCorreo = new Ext.form.FormPanel({ id: 'multiCorreo', name: 'multiCorreo', frame: true, title: 'MultiCorreo', allowBlank: true, items: [CorreoMultiset, boton1] });
var view = new Ext.Viewport({ id: 'principal', defaults: { border: false }, layout: 'fit', items: [multiCorreo] }); } }} ();
Ext.EventManager.onDocumentReady(MainLayout.init, MainLayout, true);
namespace Navistar.Web.Controllers{ public class MultiCorreoController : Controller { public readonly ILog logger; bool success = false;
public MultiCorreoController() { logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); logger.Debug("MultiCorreoController"); } public ActionResult MultiCorreo() { return View(); }
public JsonResult Datos(string Correo, decimal Porcentaje, int Periodo, decimal Factor) { if (Correo != null && Porcentaje < 100 && Periodo > 0 && Periodo < 49 && Factor > 1) { success = true; } else { return Json(new { success = false, msgmal = "Verifique que los datos sean correctos" }); } if (success == true) { try { return Json(new { success = true, msgbien = "Datos obtenidos correctamente" }); } catch (Exception e) { return Json(new { error = e.Message }); } }else{ return Json(new {success = false, sistema = "ERROR DE SISTEMA"} ); } } }}
/// <reference path="../../vswd-ext_2.2.js" />
MainLayout = function () { return { init: function () { Ext.BLANK_IMAGE_URL = BLANK_IMAGE_URL; Ext.QuickTips.init(); this.initLayout(); },
initLayout: function () {
var Correo = new Ext.form.TextField({ id: 'Correo', name: 'Correo', allowBlank: false, fieldLabel: 'Correo', width: 200, maxLength: 250, vtype: 'multiemail', vtypeText: 'Introduzca solo correo(s)' });
var Porciento = new Ext.form.NumberField({ id: 'Porcentaje', name: 'Porcentaje', allowBlank: false, fieldLabel: 'Porcentaje de aumento', allowDecimals: true, allowNegative: true, maxValue: 100, vtypeText: 'El valor maximo es de 100' });
var Periodo = new Ext.form.NumberField({ id: 'Periodo', name: 'Periodo', allowBlank: false, fieldLabel: 'Periodo de Mes', allowDecimals: false, vtypeText: 'Acepta valores entre 1 y 48', minValue: 1, maxValue: 48 });
var Factor = new Ext.form.NumberField({ id: 'factor', name: 'Factor', allowBlank: false, fieldLabel: 'Factor', allowDecimals: true, decimalPrecision: 2, vtypeText: 'El valor minimo es 1', minValue: 1 });
var CorreoMultiset = new Ext.form.FieldSet({ items: [Correo, Porciento, Periodo, Factor] });
var boton1 = new Ext.Button({ text: 'cargar', handler: function () { multiCorreo.getForm().submit({ url: VIRTUAL_DIRECTORY + 'MultiCorreo/Datos', success: function (response, action) { var result = Ext.decode(action.response.responseText); if (result.success = true) { alert(result.msgbien); } }, failure: function (response, action) { var error = Ext.decode(action.response.responseText); alert(error.msgmal); } }); } });
var multiCorreo = new Ext.form.FormPanel({ id: 'multiCorreo', name: 'multiCorreo', frame: true, title: 'MultiCorreo', allowBlank: true, items: [CorreoMultiset, boton1] });
var view = new Ext.Viewport({ id: 'principal', defaults: { border: false }, layout: 'fit', items: [multiCorreo] }); } }} ();
Ext.EventManager.onDocumentReady(MainLayout.init, MainLayout, true);
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.