Foros del Web » Programando para Internet » Javascript »

Se puede hacer esto? Ajax,php,javascript

Estas en el tema de Se puede hacer esto? Ajax,php,javascript en el foro de Javascript en Foros del Web. Buenas!!!! Lo que voy a poner es igual un poco complejo de entender, voy a intentar explikarlo de la mejor manera posible. Primero os pongo ...
  #1 (permalink)  
Antiguo 23/04/2008, 04:44
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Se puede hacer esto? Ajax,php,javascript

Buenas!!!!

Lo que voy a poner es igual un poco complejo de entender, voy a intentar explikarlo de la mejor manera posible.

Primero os pongo en situacion:

» Tengo una Base de datos con una lista de Productos (su nombre,descripcion,categoria,precio...)
» tengo una Clase en JavaScript de productos


Lo que quiero hacer es lo siguiente:

- En una Pagina, con javaScript y ajax, pedirle 3 productos
- con Ajax, hago esa peticion, y con PHP obtengo de la base de datos los 3 productos en un array
- con este array, genero en la pagina ( en la de php q aun estamos consultando con ajax) codigo javascript que necesitaria hacer en la primera pagina.
- Cuando ha terminado la pagina en PHP, con ajax recupero el codigo que he impreso en pantalla.
- Ejecutar ese codigo en javascript.

un ejemplo practico:

le pido el producto "fregona", y con php imprimo en pantalla

var nuevoProducto = new Producto('Fregona','Sirve para Fregar','3 euros') ;

esa linea la recuepro con ajax y quiero ejecutarla como si fuera codigo javascript, es decir, crearia el nuevo producto.

Se puede hacer eso ??


Thanks!
  #2 (permalink)  
Antiguo 23/04/2008, 05:30
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Re: Se puede hacer esto? Ajax,php,javascript

Buenas de nuevo, he pensado lo siguiente :]

En la pagina web en la que se supone que quiero tener todo, desde el principio tener por ejemplo esta funcion:

function ejecutaAjax() {
EjecutaAjax2() ;
}

entonces, cuando reciba todo el codigo de la web con ajax, meterlo en un div de la siguiente manera :

<div id="CodigoRecibido">
function EjecutaAjax2() {

Aki el codigo que he recibido con ajax, no seran funciones, practicamente seran nuevos objetos y variables y tal ;

}
</div>


qndo reciba de ajax , rellenaria el div y dspues ejecutaria EjecutaAjax().

Asi funcionaria? :P
  #3 (permalink)  
Antiguo 23/04/2008, 05:51
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Se puede hacer esto? Ajax,php,javascript

Hola miSko:

No sé si te he entendido bien. Creo que lo que quieres hacer es AJAX tradicional. ¿Qué dificultad agregada tienes?

Creo que obtienes mediante AJAX el string var nuevoProducto = new Producto('Fregona','Sirve para Fregar','3 euros') ;, y quieres ejecutarlo para que funcione. ¿No bastaría con un eval()?

De todas maneras siempre puedes hacer uso de AJAX como es tradicionar: pasarle una estructura XML tipo:
Código HTML:
<producto>
<nombre>Fregona</nombre>
<uso>Sirve para fregar</uso>
<precio>3 euros</precio
</producto> 
Y entonces de ese XML se convierte mediante condicionantes y switch'es a la línea de la que hablamos, para poder ejecutarla.


¿Acierto?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 23/04/2008, 07:04
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Re: Se puede hacer esto? Ajax,php,javascript

De ajax obtendria un array de strings

cada elemento de ese array de strings seria una linea de codigo javascript q tndria q ejecutar.

como seria?

podria recorrerlo con un bucle for y hacer el eval ?

por ejemplo

Cita:


lista[0] = "var mensaje = new Mensaje();" ;
lista[1] = "mensaje.msg = 'hola' ; " ;
lista[2] = "mensaje.mostrarmensaje() ; " ;

for( i=0 ; i < lista.length ; i++)
eval(lista[i]) ;


asi bastaria?
  #5 (permalink)  
Antiguo 23/04/2008, 12:09
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Se puede hacer esto? Ajax,php,javascript

Sí, creo que así bastaría, simplemente así. De hecho no necesitarías ni el bucle, símplemente unimos todas las sentencias con un espacio vacío (o sin espacio) con un join(), y las ejecutamos con un eval():
Código PHP:
// lista es el array que contiene todas las instrucciones a ejecutar:
var todasLasInstrucciones lista.join("");
eval( 
todasLasInstrucciones );     // ejecutamos lo que haya ahí 
Creo que necesitarías probarlo para confirmar si fuciona, pero en principio suena bien.

Y si por seguridad quieres eliminar cualquier error que suceda y mostrarlo cómodamente por pantalla utiliza un try catch:
Código PHP:
try {
  eval( 
todasLasInstrucciones );
} catch(
error) {
  
alert("Ha ocurrido un error ejecutando las instrucciones traídas con AJAX: "+error.message);

Eso te puede ayudar en la depuración de errores.

Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 24/04/2008, 09:12
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Re: Se puede hacer esto? Ajax,php,javascript

con el Eval va de lujo.

Thanks ! :]


he recorrido el array y por cada elemento le e exo un eval. Thanks
  #7 (permalink)  
Antiguo 24/04/2008, 11:18
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Se puede hacer esto? Ajax,php,javascript

De nada, me alegro de que te funcione

Hasta otra!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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 16:14.