Foros del Web » Programando para Internet » PHP » Zend »

[SOLUCIONADO] Zf2 + ajax

Estas en el tema de Zf2 + ajax en el foro de Zend en Foros del Web. Hola. Tengo problemas para reproducir el ajax implementado en ZF1 en ZF2. En ZF2 hago lo siguiente. IndexController Código PHP: public function  indexAction (){          $viewModel  ...
  #1 (permalink)  
Antiguo 23/09/2013, 03:46
Avatar de lcervantes  
Fecha de Ingreso: abril-2002
Mensajes: 137
Antigüedad: 20 años, 3 meses
Puntos: 0
Información Zf2 + ajax

Hola.
Tengo problemas para reproducir el ajax implementado en ZF1 en ZF2.


En ZF2 hago lo siguiente.
IndexController

Código PHP:
public function indexAction(){
        
$viewModel $this->jqueryAjaxAction();
        
$viewModel->title 'Title';
        
$viewModel->Nombre "Nombre";
        
$viewModel->Apellido "Apellido";
        return 
$viewModel
}

public function 
jqueryajaxAction(){
         echo 
"JQUERY AJAX";
         
$viewModel = new ViewModel();
         
$viewModel->Nombre1 "Nombre AJAX";
         
$viewModel->Apellido1 "Apellido AJAX";
         
//$viewModel->setTerminal($this->getRequest()->isXmlHttpRequest());
         
$this->layout('layout/layout'); 
         return 
$viewModel;
 } 
En la Vista:
index.phtml

Código PHP:
  echo "NOMBRE:" $this->Nombre ."<br/>";
  echo 
"APELLIDO:" this->Apellido ."<br/>";
  echo 
"NOMBRE1:" $this->Nombre1 "<br/>";
  echo 
"APELLIDO1:" $this->Apellido1 ."<br/>"
jqueryajax.phtml

Código PHP:
<div id="HOLA">JQUERYAJAX</div>
<
div id="RESULT"DATOSssss</div



El tema es que no consigo que me muestre lo que contiene jqueryajax.phtml
Solo me ejecuta lo del action jqueryAjaxAction, pero no llega a mostrar el contenuido de su vista.

NOMBRE: Nombre
APELLIDO:Apellido
NOMBRE1: Nombre1
APELLIDO1: Apellido1



Si ejecuto directamente, dominio/application/index/jqueryajax
Si que me ejecuta. Evidentemente es el camino habitual.

Alguna idea de como se puede solucionar?.

Muchas gracias.
__________________
LCervantes
--------------------------------------------
www.nerrots.es
  #2 (permalink)  
Antiguo 26/09/2013, 15:17
Avatar de lcervantes  
Fecha de Ingreso: abril-2002
Mensajes: 137
Antigüedad: 20 años, 3 meses
Puntos: 0
Información Respuesta: Zf2 + ajax

Hola.
Pongo la solución que he encontrado. No se si es la mas correcta, pero funciona.

Básicamente una acción de un controller llama a otra acción. Intentando montar ajax, cuando se ejecuta jqueryajx, solo llama a su respectivo action y no a todo, refrescando en el memento.


Controller
Código PHP:
public function indexAction(){ 
        
$viewModel = new ViewModel();
        
$viewModel->title 'Title'
        
$viewModel->Nombre "Nombre"
        
$viewModel->Apellido "Apellido"

        
$viewModelAjax $this->forward()->dispatch('Application\Controller\Index', array('action'=>'jqueryAjax'); 
        
$viewModel->addChild($viewModelAjax,'nombre_para_identificarle');

        return 
$viewModel;  


public function 
jqueryajaxAction(){ 
         
$viewModel = new ViewModel(); 
         
$viewModel->Nombre1 "Nombre AJAX"
         
$viewModel->Apellido1 "Apellido AJAX"
         
//$viewModel->setTerminal($this->getRequest()->isXmlHttpRequest()); 
         
return $viewModel
 } 
View
index.phtml
Código HTML:
<div> titulo</div>
echo $this->Nombre;
echo $this->Apellido1
echo $this->nombre_para_identificarle;

jqueryajax.phtml
Código PHP:
<script type="text/javascript">
      $(
document).ready(function() {
            $(
'#titulo').click(function(event) {
                    $.
ajax({
                            
asynctrue,
                            
type"GET",
                            
dataType"html",
                            
contentType'application/x-www-form-urlencoded',
                            
url"Http://URL.dominio.com/application/index/jaqueryajax',
                            data: "
param1=20",
                            beforeSend: function(data){
                              $('#zonadecarga').html("
Carregant.....");
                            },
                            success:function(data){
                              $('#zonadecarga').html(data);
                            },
                            error: function(requestData,strError,strTipoError){
                              alert("
Error:"+ strError + ":" + strTipoError);
                            }
                    });
            });
      });
</script> 
<div id="
titulo"/>TITULO AJAX</div>
<div id="
zonadecarga">
echo $this->Nombre1;
echo $this->Apellido1;
</div> 

Espero que os sirva.
Saludos,
__________________
LCervantes
--------------------------------------------
www.nerrots.es

Etiquetas: Ninguno
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 22:09.