Foros del Web » Programando para Internet » Javascript »

Usando EVAL para cargar información de una llamada AJAX

Estas en el tema de Usando EVAL para cargar información de una llamada AJAX en el foro de Javascript en Foros del Web. Hola gente, Estoy buscando una mejor forma de hacer lo siguiente a ser posible sin tener que usar eval :S. Utilizo una llamada AJAX para ...
  #1 (permalink)  
Antiguo 16/11/2011, 07:22
 
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 0
Usando EVAL para cargar información de una llamada AJAX

Hola gente,

Estoy buscando una mejor forma de hacer lo siguiente a ser posible sin tener que usar eval :S.

Utilizo una llamada AJAX para cargar el contenido de un archivo búsqueda.php. Este archivo me ha generado un array en Javascript de elementos que cumplen el criterio de búsqueda. Este busqueda.php devuelve algo asi:

buscArray = new Array();
buscArray[0] = new Contenido(xx,xx,xx,xx,xx);
buscArray[1] = new Contenido(xx,xx,xx,xx,xx);
buscArray[2] = new Contenido(xx,xx,xx,xx,xx);

Ahora mismo lo que hago al recibir la respuesta es lo siguiente:
$.ajax({
type: "POST",
url: "busqueda.php",
data: "buscar="+busc,
contentType: CONTENT_TYPE,
success: function(msg){
alert(msg);
try{
eval(msg);
if(buscArray[0].Title != ""){
//hago una cosa
}else{
//hago otra
}
}catch(exception){
//lanzo excepción
}
}
});

Utilizo el eval porque quiero tener la estructura completa devuelta por busqueda.php. De esta forma puedo acceder a buscArray cuando quiera.

Es posible hacer esto mismo sin tener que usar el eval??

Mi conocimiento de AJAX es relativamente limitado así que no dudéis en hacerme aprender

Un saludo.
  #2 (permalink)  
Antiguo 16/11/2011, 08:06
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 4 meses
Puntos: 160
Respuesta: Usando EVAL para cargar información de una llamada AJAX

Si queres acceder al array vas a tener que usar json para la devolucion de los datos. Por ej:

PHP
Código PHP:
buscArray = new Array();
buscArray[0] = new Contenido(xx,xx,xx,xx,xx);
buscArray[1] = new Contenido(xx,xx,xx,xx,xx);
buscArray[2] = new Contenido(xx,xx,xx,xx,xx);
echo 
json_encode($buscArray); 
JS
Código Javascript:
Ver original
  1. $.ajax({
  2.     type: "POST",
  3.     url: "busqueda.php",
  4.     data: "buscar="+busc,
  5.     dataType: 'json',
  6.     contentType: CONTENT_TYPE,
  7.     success: function(obj){
  8.         if(obj[0].Title != ""){
  9.             //hago una cosa
  10.         }else{
  11.             //hago otra
  12.         }
  13.     }
  14. });

Accedes al objeto como si fuera un array y a los atributos como si fuera un objeto normal.

Cualquier cosa que no entiendas avisame ;)

Saludos!
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 16/11/2011, 08:47
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 9 meses
Puntos: 310
Respuesta: Usando EVAL para cargar información de una llamada AJAX

Supongo, o quiero suponer, que si le dices a jQuery que esperas un JSON el automáticamente te convierte el resposeText a un objeto JS, pero como no está de más saber hacerlo "a pelo":
Código Javascript:
Ver original
  1. xhr.onreadystatechange = function(){
  2.  if(xhr.readyState == 4 && xhr.status == 200){
  3.   array = (JSON.parse || eval)(xhr.responseText);
  4.  }
  5. }
Donde xhr es el objeto AJAX.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #4 (permalink)  
Antiguo 16/11/2011, 11:44
 
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Usando EVAL para cargar información de una llamada AJAX

Muchas gracias por las 2 respuestas.

Una duda que me surge Linuxzero. Ese array lo tengo disponible durante la ejecución no?? Imagino que sí, pero por estar 100% seguro.

Muchas gracias

Última edición por negrocebollin; 16/11/2011 a las 11:46 Razón: Falta información
  #5 (permalink)  
Antiguo 16/11/2011, 11:52
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 4 meses
Puntos: 160
Respuesta: Usando EVAL para cargar información de una llamada AJAX

Si a la ejecución te referís al ciclo de vida del ajax entonces si, es durante la ejecucion, pero solo al alcanzar el state de success, antes no lo vas a tener.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #6 (permalink)  
Antiguo 17/11/2011, 11:27
 
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Usando EVAL para cargar información de una llamada AJAX

Sí, sí. Evidentemente después de recibir el success lógicamente.

Muchas gracias por las respuestas.

Un saludo.

Etiquetas: ajax, eval, llamada, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:21.