Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

POO con AJAX, gran duda

Estas en el tema de POO con AJAX, gran duda en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buen dia, soy nuevo en este foro, aunque no en cuanto a lectura se refiere, es por eso que decidi registrarme pues veo que hay ...
  #1 (permalink)  
Antiguo 13/08/2009, 01:05
 
Fecha de Ingreso: agosto-2009
Mensajes: 42
Antigüedad: 15 años, 4 meses
Puntos: 0
POO con AJAX, gran duda

Buen dia, soy nuevo en este foro, aunque no en cuanto a lectura se refiere, es por eso que decidi registrarme pues veo que hay mucha gente experimentada aca.

Les comento que me he iniciado en esto de PHP y estoy empezando un proyecto web basado en capas (o al menos lo intento) .

Antes de hacerles la pregunta, tengo que indicarles mi estado actual. Estaba´programando la web estructuradamente, pero como ya cambie a POO, ahora ya tengo mi front controller, los demas controladores, models, views, etc.

Yo estaba usando AJAX antes y quisiera conservar esto con POO tambien, pero no se como ... por ejemplo .....

Yo tenia con AJAX combos o select dependientes ... escojia un PAIS y aparecian en otro select abajo los ESTADOS ... seleccionaba un estado y aparecian los DISTRITOS.

Ahora con POO, cuando cargo la pagina en donde estan los selects, mi controlador se encarga de llenar a mi select de PAIS, y lo hace correcto ... pero aca viene el problema.

MI AJAX ES: (una parte )
Código:
var ajax=nuevoAjax(); 
		ajax.open("GET", "complementos/agregacomboubic.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
		ajax.onreadystatechange=function()   
		//No inicializado Conexion establecida Recibiendo respuesta Procesando respuesta Finalizado 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
				selectDestino.length=0;
				var nuevaOpcion=document.createElement("option"); 
				nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
				selectDestino.appendChild(nuevaOpcion); 
				selectDestino.disabled=true;	
			}
			if (ajax.readyState==4)
			{
				selectDestino.parentNode.innerHTML=ajax.responseText;
			} 
		}
		ajax.send(null);
Como veran mi ajax llamaba un script aparte el cual invocaba una instancia de mi BD, obtenia la lista de ESTADOS y devolvia el resultado en un nuevo SELECT.

MI PREGUNTA ES: Como hago ahora que estoy usando POO????
1.- Debo hacer que mi controladora de alguna manera llame a ajax???, como?
2.-En el ajax.open debo llamar a algun metodo de mi clase controladora?, como seria esto?
3.-Dejo el ajax function como esta y simplemente desde ese script php me conecto con mi clase model (la de la base de datos). como?

En realidad estoy atascado aqui y pues, lo malo es que tengo mas acciones ajax en el proyecto que tendria que resolver al igual que esta.

Muchas gracias por su respuestas. Espero si me hayan entendido
  #2 (permalink)  
Antiguo 13/08/2009, 06:10
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 4 meses
Puntos: 55
Respuesta: POO con AJAX, gran duda

las consultas ajax las puedes detecar con

Código php:
Ver original
  1. public function isAjax() {
  2.             return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest' ;
  3.         }

evitando de esa forma tener q usar un controlador para ajax

sino lo q peudes hacer, es modificar todas las consultas q quieres q se manejen via ajax, con javascritp, y cambiarle la direccion, de esta manera harias tu ajax no intrusivo y accesible, hacienod q todas las consultas viajen a otra parte
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 13/08/2009, 14:42
 
Fecha de Ingreso: agosto-2009
Mensajes: 42
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: POO con AJAX, gran duda

hola, creo que no te entendi bien ... tal vez es lo mismo que hice (y que me funciona por ahora)

diganme si esta bien lo que hice por favor .... a ver ..... ya que toda accion en la web la derivo a mi frontcontroller dandole el nombre de el controlador a usar y la accion ...... entonces decidi que dejaria al ajax llamar a un controlador a hacer su trabajo .... es decir .... algo asi ....

Código:
ajax.open("GET", "index.php?con=ubicacion&acc=load_comb_depend&select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
en donde Ubicacion es el controller, LOAD_COMB_DEPEND, es la funcion que hace las instrucciones correspondientes con PHP, y los otros parametros son otros necesarios para la funcion PHP.

PREGUNTA 1: Esto esta bien?, o le estoy dando muchas vueltas y puedo hacer algo mas eficiente?


AHORA, en otro caso, tengo una lista de items arrojado segun criterios de busqueda. Obviamente tendre que paginar esta lista de items. Yo lo solia paginar con ayuda de AJAX (en los botones ATRAS y SIGUIENTE). Supongo que aca tambien que tendre que llamar a un metodo de controller PAGINAR o algo asi.

PREGUNTA 2: Estoy en el camino correcto?. Y si no, cual deberia ser el mas apropiado considerando que aun estoy en nivel principiante

Muchas gracias por sus respuestas y ayuda.
  #4 (permalink)  
Antiguo 13/08/2009, 21:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: POO con AJAX, gran duda

Claro, de hecho una consulta AJAX es igual que una consulta HTTP, no hay diferencia, por eso las debes de tratar igual, la única diferencia es cuando recibes los datos, en como los procesas, pero desde el lado de PHP es "igual".

Saludos.
  #5 (permalink)  
Antiguo 13/08/2009, 23:52
 
Fecha de Ingreso: agosto-2009
Mensajes: 42
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: POO con AJAX, gran duda

muchas gracias por el visto bueno gatorv .... por ahora todo me va saliendo bien. Mando al ajax que llame una funcion de algun controlador y este hace el trabajo. Si tengo que enviarle parametros, se lo envio a traves de algun arreglo el cual el front controller lo deriva al controlador correspondiente.

No he creado ningun controller para paginar ... nada mas se lo he dejado esa labor al controlador correspondiente.

Cualquier observacion me la dicen, se los agradeceria bastante. Alguna otra duda se las hare saber.

Muchas gracias amigos.
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 01:58.