Foro

capturar el error devuelto

0
Buenas, ya estoy devuelta por estos lados despues de un tiempo sin escribir en este genial foro, y como siempre abusando de entrada <!-- s:lol: --><!-- s:lol: --> <!-- s:lol: --><!-- s:lol: --> . mi dilema es el siguiente: estoy tratando de capturar el mensaje de error al tratar de guardar un formulario en la BD, pero aunque se detiene el script no logro devolver el porque del error. les pego el código a ver si algún amable me echa una manito: aquí un trozo del código donde está el formulario
	
/*formulario de datos*/
		var form = new Ext.FormPanel({
			url: '../php/guardar_empleado.php',
			border: false,
			bodyStyle:'padding: 10px',
			reader: new Ext.data.JsonReader(
            {  root: "rows",
               success: true,
               idProperty: "rows"
              },
            [   {name: 'nombre'},
                {name: 'paterno'},
                {name: 'materno'},
                {name: 'rut'},
                {name: 'nacimiento'},
				{name: 'cargo'},
                {name: 'id_empresa'},
				{name: 'contrato'},
				{name: 'afp'},
				{name: 'isapre'},
				{name: 'estado'},
                {name: 'cargas'}
              ]
			)
			,items:[nombre,paterno,materno,rut,nacimiento,domicilio,telefono,email,cargo,empresaCombo,contrato,afp,isapre,estado,cargas]
			,tbar:{
				items:[
					{
						xtype:'button',
						tooltip: 'Guardar los datos',
						iconCls:'guardar',
						handler: function(){
							form.getForm().submit({
								success: function (f,a){
									Ext.Msg.alert('Confirmación','Datos guardados correctamente');
                                    form.getForm().reset();
								},
								failure: function(f,a){
									Ext.Msg.alert('Error', a.result.errormsg);
                                    console.log(a.result.errormsg);
								}
							});
						}
					}
				]
			}
		});
y he aqui el php donde guardo o devuelto el error:
<?php
include ("conexion.php");
mysql_select_db("bdempleados") or die ("no se pudo seleccionar la BD");
require_once('../FirePHPCore/FirePHP.class.php');
$mifirePHP = FirePHP::getInstance(true);
$rut = strtoupper($_POST['rut']);
$nombre = strtoupper($_POST['nombre']);
$paterno = strtoupper($_POST['paterno']);
$materno = strtoupper($_POST['materno']);
$nacimiento = formatofechas($_POST['nacimiento']);
$estado = $_POST['estado'];
$cargas = $_POST['cargas'];
$afp = $_POST['afp'];
$isapre = $_POST['isapre'];
$cargo = strtoupper($_POST['cargo']);
$empresa = $_POST['id_empresa'];
$contrato = formatofechas($_POST['contrato']);
$domicilio = strtoupper($_POST['domicilio']);
$telefono = $_POST['telefono'];
$email = strtolower($_POST['email']);
function formatofechas($fecha){
    $f = explode ("/",$fecha);
    return ($f[2]."/".$f[1]."/".$f[0]);
}
$Sql = "SELECT * FROM empleados WHERE rut='$rut'";
$mifirePHP->log($Sql, "sql");
if ($existe = mysql_query($Sql)) {
    $filas =  mysql_num_rows($existe);
    $mifirePHP->log($filas, "filas");
    if ($filas > 0){
        //$error = mysql_error();
	    echo '{success:false, errors:"El usuario ya existe!"}';
    } else {
        $Sql = "INSERT INTO empleados VALUES(default,'".$rut."','".$nombre."','".$paterno."','".$materno.
                "','".$nacimiento."','".$estado."',".$cargas.",'".$afp."','".$isapre."','".$cargo."',".
                $empresa.",'".$contrato."','".$domicilio."','".$telefono."','".$email."')";
        $mifirePHP->log($Sql, "sql");
        if ($rs = mysql_query($Sql)) {
            echo "{success:true}";
        } else {
	        $error = mysql_error();
	        echo '{success:false, errors:"'.$error.'"}';
        }
    }
}
?>
com pueden ver hago un console.log a el error devuelto pero me dice."undefined" cualquier luz será agradecida.
0
tal vez sea por que en el archivo de javascript estas tratando de mostrar a.result.[b]errormsg[/b] y en el archivo php estas declarándola como : echo '{success:false, [b]errors[/b]:"'.$error.'"}'; trata de colocar el mismo nombre en ambos lados. salu2
0
la respuesta debe ser { success: false, errors: [ {id: 'el id1', msg: 'el mensaje de error'}, {id: 'el id2', msg: "el mensaje"}, ..... ] } esepero te sirva, si no es el id del campo es el name, no recuerdo ahorita bien {name: 'el nombre del campo', msg: 'el mensaje de error'}
0
Es utilizando el "name" <!-- s;) --><!-- s;) --> <!-- m -->http://www.quizzpot.com/2009/08/validac ... rmularios/<!-- m --> saludos
0
tengo este ejemplo, Form Panel
Ext.namespace('Adm.Auth');
Adm.Auth.Login = {
	
	data: {
		redirect : "/", // default home del sitio
		post_url : "/",
		wait_message : "Wait",
		no_valid_message : "Invalid Data",
		default : {username: '',password:'',remember:false}
	},
		
	// Eventos
	sendData: function (){
	   // var mask = new Ext.LoadMask(Ext.get('win-login'),
		// {msg:this.data.wait_message});
	    
		if ( !this.form.getForm().isValid() ) {
			Ext.Msg.show({
				title : "Error",
				msg: this.data.no_valid_message,
				buttons: Ext.Msg.OK,
				icon: Ext.Msg.ERROR
			});
			return;
		}
		// mask.show();
		
		this.form.getForm().submit({
			waitTitle: 'Validando!!!',
			
			waitMsg: this.data.wait_message,
			
			clientValidation: false,
			
			method: 'post',
			success: function() {
			 	// mask.hide();
				window.location=this.data.redirect;
			},
			failure: function (form, action) {
				// mask.hide();
				// Ext.Msg.alert('Error',action.result.msg);
			},
			
			scope: Adm.Auth.Login
		});
	},
		
	init : function(data) {
		
		if (!data) {
			Ext.each(data,function(item,index,length){
				this.data[index] = item;
			});
		}
		
		this.form = new Ext.form.FormPanel({
	        baseCls: 'x-plain',
	        // labelWidth: 70,
	        url:this.data['post_url'],
	        defaultType: 'textfield',
	        items: [{
	            fieldLabel: 'Email',
	            name: 'login[email]',
	            emptyText : 'Escriba su email',
				id : 'login-email',
				allowBlank: false,
				vtype: 'email',
				value: this.data.default.username 
	        },{
	        	fieldLabel : 'Contraseña',
				name : 'login[password]',
				inputType: 'password',
				emptyText : '*******',
				id : 'login-password',
				allowBlank : false,
				value : this.data.default.password
	        }, {
	            xtype: 'checkbox',
	            fieldLabel: 'Recordarme',
	            name: 'login[remember]',
	            id : 'login-remember'
	        }, {
	        	hideLabel: true,
	        	hidden: true,
	        	name: 'login[ssk]',
		        id : 'login-ssk',
		        value: '123456'
		    },{
	        	hideLabel: true,
	        	hidden: true,
	        	name: 'is_slot',
		        value: 1
		    }
		    ]
	    });
		var window = new Ext.Window({
	        title: 'Login Form',
	        id: 'win-login',
	        width: 310,
	        // height:300,
	        minWidth: 400,
	        minHeight: 200,
	        layout: 'fit',
	        plain:true,
	        bodyStyle:'padding:5px;',
	        buttonAlign:'center',
	        items: this.form,
	        buttons: [{
	            text: 'Send',
	            handler: this.sendData,
	            scope: this
	        }]
	    });
	    window.show();
	}
};
respuesta de error:
{
	success: 0,
	errors: [
		{
			id: 'login-email',
			msg: 'Usuario y contraseña no coinciden'
		},
		{
			id: 'login-password',
			msg: ''
		}
	]
}
asi me muestra los errores que se vienen del servidor

¿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.