Foro

[Solucionado] Ayuda con xml retornado por php

0
buenas, estoy haciendo un login mediante extjs y php, yo desde la función submit de mi js le mando al php el usuario y la password, seguidamente en el php compruebo si existe y retorno una cadena con el texto xml si es error o si es ok, lo que quiero es coger el nodo resultado para saber si es ok o es error y asi porder mostrar el mensaje de error o redireccionar a la pagina de inicio del programa. Gracias Aqui muestro el login.js y el login.php: [u]LOGIN.JS[/u] Ext.onReady(function(){ Ext.QuickTips.init(); var res = Ext.data.Record.create([ {name: 'resultado', mapping: 'resultado'} ]); var reader = Ext.data.XmlReader({ totalRecords: "total", record: "respuesta", id: "id" }, res); /*var proxy = new Ext.data.HttpProxy({ method:'GET', url: 'php/login.php' }); this.store = new Ext.data.Store({ proxy: proxy, reader: reader });*/ var log = new Ext.FormPanel({ id: 'login', renderTo: Ext.getBody(), labelWidth: 75, width: 350, buttonAlign: 'right', border: false, bodyStyle: 'padding:10px 10px 0;', defaults: { anchor: '95%', allowBlank: false, selectOnFocus: true, msgTarget: 'side' }, defaultType: 'textfield', items: [{ fieldLabel: 'Usuario', name: 'usu', blankText: "El campo usuario es requerido" },{ inputType: 'password', fieldLabel: 'Password', name: 'pass', blankText: "El campo password es requerido" }], buttons: [{ text: 'Entrar', handler: function(){ if(log.getForm().isValid()){ var sb = Ext.getCmp('form-statusbar'); sb.showBusy('Comprobando Datos...'); log.getEl().mask(); log.getForm().submit({ method:'GET', url:'php/login.php', success: function(){ //MI DUDA ESTA AQUI, COMO RECOGERLO //Y BUSCAR EL NODO RESULTADO CON IF }, failure:function(form, action){ log.getForm().reset(); sb.showBusy('Insertar Datos'); sb.setStatus({ iconCls:'', clear: true }); log.getEl().unmask(); Ext.MessageBox.show({ title:'Error', msg:'No se ha podido conectar al servidor, inténtelo de nuevo', buttons: Ext.MessageBox.OK, icon: 'imagen_error' }); } }) } } },{ text:'Limpiar', handler: function(){ log.getForm().reset(); } }] }); log.render('lg'); new Ext.Panel({ title: 'Iniciar Sesión', renderTo: Ext.getBody(), width: 350, autoHeight: true, layout: 'fit', items: log, bbar: new Ext.StatusBar({ id: 'form-statusbar', defaultText: 'Insertar Datos', plugins: new Ext.ux.ValidationStatus({form:'login'}) }) }); }); [u]LOGIN.PHP[/u] <?php include ("conexion.php"); include ("logbilling.php"); $cnx = conectar(); $salida_xml = "<?xml version=\"1.0\" encoding = \"ISO-8859-1\"?>\n"; $usu = $_GET['usu']; $pass = $_GET['pass']; $sql = "SELECT i_id_cliente FROM cliente WHERE V_USUARIO_CLI = '".mysql_real_escape_string($usu)."' AND V_PASSWORD_CLI = '".mysql_real_escape_string(md5($pass))."';"; $res = mysql_query ($sql); LogToFile("USU: ". $usu . " PASS: ". $pass . "Numero Res: " . mysql_num_rows($res)); if(mysql_num_rows($res) > 0) { $salida_xml .= "<respuesta>\n"; $salida_xml .= "<total>1</total>\n"; $salida_xml .= "<id>1</id>\n"; $salida_xml .= "<res>\n"; $salida_xml .= "\t<resultado>Ok</resultado>\n"; $salida_xml .= "</res>\n"; $salida_xml .= "</respuesta>"; mysql_close($cnx); return $salida_xml; } else { $salida_xml .= "<respuesta>\n"; $salida_xml .= "<total>1</total>\n"; $salida_xml .= "<id>2</id>\n"; $salida_xml .= "<res>\n"; $salida_xml .= "\t<resultado>Error</resultado>\n"; $salida_xml .= "</res>\n"; $salida_xml .= "</respuesta>"; mysql_close($cnx); return $salida_xml; } ?>
0
El callback "success" recibe dos parámetros, el mismo formulario y un action.
success: function(form, action) {
       console.debug(action.result); //checa que te imprime en la consola
}
el código anterior imprime en la consola de firefox la información retornada por el server. saludos
0
Ya lo e solucionado, muchas gracias de todas formas: El success y el failure lo he quitado, cuando entra en el isvalid lo mando a una funcion que llama al php y hay comparo si trae ok o error y realizo su correspondiente accion: Code: ............... handler: function(){ if(log.getForm().isValid()){ var sb = Ext.getCmp('form-statusbar'); sb.showBusy('Comprobando Datos...'); log.getEl().mask(); var usuValue = usuario.getValue(); var passValue = password.getValue(); validar(usuValue, passValue, sb, log); } ........... Code Funcion Validar: function validar(usu, pass, sb, log) { var conn = new Ext.data.Connection; sb.showBusy('Comprobando Datos...'); setTimeout(function(){ conn.request({url: 'login.php', params: {usu: usu, pass: pass}, callback: function(options, success, response) { if (success) { var xmlRespuesta = response.responseXML; var nodosElementos = xmlRespuesta.getElementsByTagName('resultado'); atributo = nodosElementos[0].getAttribute('success'); if (atributo == 'Error') { log.getForm().reset(); sb.showBusy('Insertar Datos'); sb.setStatus({ iconCls:'', clear: true }); log.getEl().unmask(); Ext.MessageBox.show({ title:'Error', msg:'Usuario o Password Incorrectos', buttons: Ext.MessageBox.OK, icon: 'imagen_error' }) } else { var url = 'index.html'; Ext.MessageBox.show({ msg: 'Accediendo al Sistema', progressText: 'Accediendo al sistema', width:300, wait:true, waitConfig: {interval:100}, animEl: 'botonIniciar' }); setTimeout(function(){ location = url; }, 3500); } } } }); }, 4000); } PD: El php tambien lo he cambiado para enviar atributos

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