Foro

Traer Registro de la Base de Datos a un Formulario en el Blur de un campo Field Text

0
Hola Comunidad Quizzpot, Tengo un formulario donde programe en el evento onBlur del FieldText al que le he mandado como parametro lo que digita a un archivo PHP el cual me esta consultando bien el dato y me da la respuesta en JSON, requiero de ayuda para que me digan como cargo esa información a ese mismo Formulario, aca dejo parte del código de la definición del formulario y el evento Definición del Formulario: xtype: 'form', region: 'north', height: 315, id: 'infobasica', layout: { columns: 2, type: 'table' }, bodyPadding: 10, title: 'Datos Básicos del Productor', Definición del Campo donde digito un nùmero ha ser consultado en la Base de Datos { xtype: 'textfield', id: 'documento_productor', width: 250, fieldLabel: 'Número de Documento', labelAlign: 'top', listeners: { blur: { fn: me.onDocumento_productorBlur, scope: me } } } Evento blur: Ext.Ajax.request({ url: 'consultap.php', method: 'GET', headers: {'Content-Type': 'text/html'}, waitTitle: 'Cosulta productor', waitMsg: 'Enviando Datos...', format:'json', params: { cedula: Ext.getCmp('documento_productor').getValue() }, success: function(response, callOptions) { //Ext.Msg.alert('Productor!', 'El Productor esta registrado en la Base de Datos'); //Ext.getCmp('infobasica').getForm().loadRecord(data); //Ext.getCmp('infobasica').getForm().loadRecord(1); Ext.getCmp('infobasica').getForm().getValues(true); }, failure: function(response, callOptions) { Ext.Msg.alert('Alerta!', 'El Productor no esta registrado en la Base de Datos'); }, scope:this }); en success he dejado comentariado las pruebas que he tratado de hacer a ver si me visualiza los datos y ninguna de ellas funciono. Agradezco la colaboración de ustedes.
0
recuerda que la respuesta del JSON se encuentra en la variable "response" del success de tu ajax, debes decodificarla antes, asi: var obj = Ext.decode(response.responseText); console.log(obj); si tu respuesta JSON tiene la estructura tipica, por ejemplo {"success": true, "data": {"xxxx":"yyyy"}} veras que los datos estan en obj.data y puedes cargar tu formulario con Ext.getCmp('infobasica').getForm().loadRecord(obj); si no te funciona checa que estes devolviendo correctamente el JSON espero te sea de ayuda
0
Gracias Tokkaido, me ha funcionado de maravilla. Una pregunta sabes en el Ext.Ajax.request no me esta funcionando bien el success y failure a que se debe? pues el código de mi pagina de PHP es: $lista = mysql_query($query, $algodon) or die(mysql_error()); $row = mysql_fetch_assoc($lista); $totalRows = mysql_num_rows($lista); if ($totalRows > 0) { echo "{success: true, data: " .json_encode($row) ."}"; } else { echo "{failure: false, errors: { reason: 'El Productor no se encuentra inscrito.' }}"; } y siempre se va es por sucess pues he colocado un mensage y siempre me sale ese mensage màs no el de error.
0
porque el failure del ajax se produce cuando el ajax falla, por ejemplo en comunicarse con el servidor, para devolver una falla del otro lado debes hacerlo con success: false y por el lado del js controlar por ejemplo var obj = Ext.decode(response.responseText); if (obj.success){ //tal cosa }else{ //tal otra alert(obj.errors.reason); } te aconsejo que el JSON lo devuelvas asi en todo caso: if ($totalRows > 0) { echo '{"success": true, "data": ' .json_encode($row) .'}'; } else { echo '{"success": false, "errors": { "reason": "El Productor no se encuentra inscrito." }}'; } puedes probar tu JSOn en http://jsonlint.com/ cuando tengas dudas si el error se puede estar dando alli suerte
0
Gracias Tokkaido por la sugerencia, te he enviado un mensage miralo y me comentas, gracias.
0
Hola Tokkaido ya corregi lo del success con el (if else) que me diste. Ahora en ese formulario le tengo un campo el cual quiero mostrar el valor que tiene en un Radiogroup el cual tengo definido asì: xtype: 'radiogroup', border: 0, id: 'tipodoc_productor', width: 269, fieldLabel: 'Tipo de Documento', labelAlign: 'top', items: [ { xtype: 'radiofield', value: 'C.C.', boxLabel: 'C.C.' }, { xtype: 'radiofield', value: 'C.E.', boxLabel: 'C.E.' }, { xtype: 'radiofield', value: 'NIT.', boxLabel: 'NIT. ' } ] pero al momento de mostrar los datos en el formulario no se selecciona ninguna opción, en la base de datos tengo por ejemplo almacenado el valor de C.C., ah y otra pregunta como hago para que ese Radiogroup sea de selección unica.
0
Ambos problemas se solucionaran cuando le asignes la propiedad "name" a cada item, deben tener el mismo name todos los que esten relacionados y debe ser el mismo nombre del campo que devuelves en tu JSON
0
Hola Tokkaido, La opción de selección única ya me funciona colocandole el valor en "name", pero lo que no me funciona es cuando hago la consulta a mi base de datos, el atributo que traigo se llama "tipodoc_productor" , y este es el còdigo com deje el radiogroup { xtype: 'radiogroup', border: 0, width: 269, fieldLabel: 'Tipo de Documento', labelAlign: 'top', items: [ { xtype: 'radiofield', name: 'tipodoc_productor', value: 'C.C.', boxLabel: 'C.C.' }, { xtype: 'radiofield', name: 'tipodoc_productor', value: 'C.E.', boxLabel: 'C.E.' }, { xtype: 'radiofield', name: 'tipodoc_productor', value: 'NIT.', boxLabel: 'NIT. ' } ] } realice pruebas tambien colocandole id al radiogroup como "tipodoc_productor" y no funciona, sabes que pueda se.
0
Hoal tokkaido, ya solucione el valor que me trae de la base de datos a cada opción del radiogoup le coloque la propiedada inputValue, por ejemplo inputValue: 'C.C.' gracias.

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