JQuery - Envío de parámetros por Post y lectura de respuesta JSON

 
Vista:
sin imagen de perfil

Envío de parámetros por Post y lectura de respuesta JSON

Publicado por rojitasPC (5 intervenciones) el 17/11/2014 23:38:16
Hola buenas tardes bueno como dice el titulo Tengo una funcion de jquery que envia un parametro por POST, y un php que recibe y realiza la consulta en base al parametro recibido y esto convierte a json(no se si es la forma correcta de hacerlo por favor corrijame) que me genera un JSON desde una consulta. Lo que deseo es en dicha funcion de Jquery recibir el JSON y leerlo item x item. o bueno el valor de cada item del json asignarle como valor a unos inputs que tengo.

Si no me explique bien aki esta mi codigo... Espero me ayuden Gracias

1.- Codigo Jquey

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function BuscarPersona(){
 
 // alert('hola gay');
 var pDocumento=$("#txtDocumento").val();
 
 if($('#txtDocumento').val()!= ""){
 
  $.ajax({
    type: "POST",
    url: "php/consultapersona.php",
    data: "pDocumento="+pDocumento,
 
           success: function( respuesta ){
            alert(respuesta);
 
//Esta linea es para probar y pero me sale este error :: TypeError: invalid 'in' operand obj
          $.each(respuesta,function(indice,valor) {
            console.log('Indice es ' + indice + ' y valor es: ' + valor);
          });
 
 
});
 
};
}


2.- PHP que genera un Json(no se si es la forma correcta)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$aData= array();
if(isset($_POST["pDocumento"]))
{
	$Documento=$_POST["pDocumento"];
 
 
	$rsPersona=$oPersona->BuscarPersona($Documento);
 
	while( $fila=$oCn->obtenerfila($rsPersona))
	{
		$aData=array(
 
			'doc' => $fila['nro_doc'],
			'nomb' => utf8_encode($fila['nombres']),
			'sexo' => $fila['sexo'],
			'pais' => $fila['des_pai']
			);
	}
}
 
	echo json_encode($aData);
 
?>

3.- Respuesta de dicha consulta (formato JSON)
1
{"doc":"46354522","nomb":"PINEDO PINEDO JUAN CARLOS","sexo":"Maculino","pais":"PERU"}


si se dan cuenta en esta linea:
1
2
3
4
//Esta linea es para probar y pero me sale este error :: TypeError: invalid 'in' operand obj
          $.each(respuesta,function(indice,valor) {
            console.log('Indice es ' + indice + ' y valor es: ' + valor);
});

me sale este error
TypeError: invalid 'in' operand obj

typeof length === "number" && length > 0 && ( length - 1 ) in obj;

Lo que deseo es recorrer el arrar json y asignarle a unas cajas de texto cada item que tengo x ahi
Por favor ayuda...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 302
Oro
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Envío de parámetros por Post y lectura de respuesta JSON

Publicado por xve (673 intervenciones) el 18/11/2014 10:23:08
Hola, creo que lo que espera la función each() es un array de valores, no un json.
http://api.jquery.com/jQuery.each/

Ten en cuenta, que en tu función PHP recorres la base de datos, pero solo coges el ultimo registros, no crear un array de valores, simplemente crear un array con un solo indice.

Si lo que quieres es mostrar el contenido del json... lo puedes hacer así de simple:
1
2
3
4
5
var x={"nombre":"xve1", "apellidos":"xve2", "mail":"xx@xx.com"};
for(var i in x)
{
    document.write(i+":"+x[i]+"<br>");
}

Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Envío de parámetros por Post y lectura de respuesta JSON

Publicado por Wander (5 intervenciones) el 19/11/2014 21:48:23
Hola amigo #xve gracias por tu pronta respuesta, efectivamente si asi como tu dices es una sola fila pero lo solucione con esto y si la verdad si funciona:

$('#txtNombresReg').val(respuesta.nombre);

pero ahora tengo otro problemita :

en este mismo formulario tengo un combo box con un listado de paises.
x ejemplo:
<optiotion value="1">Brazil</option>
<optiotion value="2">España</option>

1.- Del array que retorna en un campo pais cuando sea 1 se autoseleccione y me muestre Brazil, o cuando retorne 2 se autosleccione España.
En realidad si lo hace con esta linea

$("#cboGeneroReg option[value="+ respuesta.pais +"]").attr("selected",true);
y tmb probe con esto

$("#cboGeneroReg > option[value="+ respuesta.pais +"]").attr("selected",true);

si lo autoselecciona con el valor recibido la primera vez que hago la consulta (click en el boton) pero las demas veces cuando hago clock en buscar ya no lo hace, tengo que volver a recargar la pagina para que lo haga, y no se porque... Ayuda por favorr......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 302
Oro
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Envío de parámetros por Post y lectura de respuesta JSON

Publicado por xve (673 intervenciones) el 20/11/2014 07:58:45
Hola Wander, la verdad es que no entiendo muy bien la problemática... ya que no se ver que diferencia hay entre la primera pulsación del botón con la segunda... debería de funcionar igual, no?

Nos puedes adjuntar el código?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Envío de parámetros por Post y lectura de respuesta JSON

Publicado por Wander (5 intervenciones) el 20/11/2014 16:13:35
Hola amigo xve pues perdon x no explicarme bien, lo que pasa es que cuando hago el primer llamado a mi archivo php q me devuelve el array si se autoselecciona con el valor retornado el #cboPaisReg , pero las demas veces que hago click en el boton #btnConsultarPersona ya no lo autoselecciona de acuerdo al id recibido, pero he probado en google crhome y ahi si funciona a la perfeccion, pero en mozilla solo funciona la primera vez que hago el llamado ami archivo php, pero las demas veces no.. adjunto mi codigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$("#btnConsultarPersona").click(function(e){
  e.preventDefault();
  BuscarPersona();
  return false;
})
 
function BuscarPersona(){
 
  var pDocumento=$("#txtDocumentoReg").val();
//$("#cboGeneroReg > option[value="+ 0 +"]").attr("selected",true);
   if($('#txtDocumentoReg').val()!= ""){
 
  $.ajax({
    type: "POST",
    url: "php/consultapersonaReniec.php",
    data: "pDocumento="+pDocumento,
           // beforeSend: function(){
           //   $('#msgLogeo').html('<img src="img/loader.gif"/> verificando');
           //},
           success: function(respuesta){
 
            if (respuesta.length==0) {
              alert('Persona no registrada en la base de datos, registrar manualmente...');
            }
            else
            {
              $('#txtNombresReg').val(respuesta.nombre);
              $('#txtApellidoPaternoReg').val(respuesta.ape_pat);
              $('#txtApellidoMaternoReg').val(respuesta.ape_mat);
 
              $('#txtDocumentoReg').val(respuesta.dni);
              $('#txtFechaNacReg').val(respuesta.fecha);
              $("#cboGeneroReg option[value="+ respuesta.sexo +"]").attr("selected",true);
              $('#cboTipoPersonaReg option[value="N"]').attr('selected',true);
              $('#cboPaisReg> option[value="+ respuesta.paisId +"]').attr('selected', 'selected');
              $('#cboGeneroReg > option[value="+ respuesta.sexo +"]').attr('selected',true);
              $('#cboTipoDocumentoReg > option[value="1"]').attr('selected',true);
              $('#txtDireccionReg').focus();
            };
 
}
 
});
 
};
 
}


Array retornado:

1
{"dni":"46354521","ape_pat":"ROJAS","ape_mat":"BRICE\u00d1O","nombre":"WANDER","sexo":"1","paisId":"1","fecha":"1990-03-07"}

estos datos os asigno a cada input y select.. la primera vez que hago el llamado(clcik en el boton buscar) asigna el valor al select #cboPaisReg y lo muestra pero las demas veces que las hago ya no!!, esto en mozilla pero en crhome si funciona perfecto... O alguna manera para que sea compatible en otros navegadores..??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 302
Oro
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Envío de parámetros por Post y lectura de respuesta JSON

Publicado por xve (673 intervenciones) el 20/11/2014 19:34:45
Hola Wander, la verdad es que no entiendo porque solo te lo haces una vez¿?

Has revisado la consola del Firefox que no haya algún error de javascript, por lo que no continué?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar