Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema con render en ajax (Zend)

Estas en el tema de Problema con render en ajax (Zend) en el foro de Frameworks JS en Foros del Web. En una vista tengo: Código PHP: <div id="articles">      <?php  echo  $this -> render ( 'index/articles.phtml' );  ?> </div> Hago una llamada ajax al hacer un ...
  #1 (permalink)  
Antiguo 19/08/2010, 12:18
Avatar de faiverson  
Fecha de Ingreso: mayo-2005
Mensajes: 79
Antigüedad: 19 años
Puntos: 0
Problema con render en ajax (Zend)

En una vista tengo:
Código PHP:
<div id="articles">
    <?php echo $this->render('index/articles.phtml'); ?>
</div>
Hago una llamada ajax al hacer un click en un boton que cambia el contenido y en el controller tengo algo asi:
Código PHP:
public function inthepressajaxAction()
    {
        
$this->_helper->ViewRenderer->setNoRender();
        
$this->_helper->getHelper('layout')->disableLayout();
        if(
$this->getRequest()->isXmlHttpRequest()) {
        
$this->view->cant $this->getRequest()->getParam('actual');
            echo 
$this->render('articles');
        }
    } 
Ahora bien mi llamada funciona y reemplaza el contenido de #articles, pero una vez que lo reemplaza, no vuelve a reemplazar si hago click despues del ajax.

Debuggeando me doy cuanta que si hago antes del ajax:
alert($('#articles').attr('id'));
Me devuelve 'articles', pero despues del ajax me devuelve 'undefined', como si no existiese para la pagina ese tag...!

Alguien sabe porque sucede esto?
__________________
Fabi... fighting versus the web
  #2 (permalink)  
Antiguo 19/08/2010, 12:36
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años
Puntos: 60
Respuesta: Problema con render en ajax (Zend)



Eso tiene que ver con el DOM y javascript, si pones igual parte de tu llamada ajax tal vez podriamos no adivinar.
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #3 (permalink)  
Antiguo 19/08/2010, 12:43
Avatar de faiverson  
Fecha de Ingreso: mayo-2005
Mensajes: 79
Antigüedad: 19 años
Puntos: 0
Respuesta: Problema con render en ajax (Zend)

Si estaba viendo y detecte parte del problema... pense que era debido a la renderizacion pero nada que ver...
Este es el script:
Código PHP:
$('.pag').click(function() {
        var 
actual trim($('.actualPage').text().split('of'));
        var 
pag = ($('.pag').hasClass('next')) ? 'next' 'prev';
        
actual actual[0];
        $.
ajax({
            
urlbasePath+'index/inthepressajax',
            
type'POST',
            
data'actual='actual+'&pag='pag,
            
dataType"html",
            
contentType"application/x-www-form-urlencoded",
            
success:function(data){
                $(
'#articles').empty();
                $(
'#articles').append(data);                
            },
            
error:function(XMLHttpRequesttextStatuserrorThrown){alert('Error: '+XMLHttpRequest.responseText ' ' textStatus ' ' errorThrown);}
        });
}); 
Esa es la llamada.
Resulta que estaba usando $('#articles').replaceWith(data); en lugar de $('#articles').empty();
$('#articles').append(data); y fallaba no se porque...
Tambien falla ese codigo sino cambio la forma en como lo llamo, es decir si llamo
$('.pag').click(function() no funciona, y si lo hace si creo una funcion onClick sobre el tag en cuestion. Ej. <a href="#" onClick="javascript:mifuncion();" class="pag">HOLA</a>
__________________
Fabi... fighting versus the web
  #4 (permalink)  
Antiguo 19/08/2010, 13:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Tema movido desde PHP orientado a objetos a AJAX
  #5 (permalink)  
Antiguo 19/08/2010, 14:12
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años
Puntos: 60
Respuesta: Problema con render en ajax (Zend)

Es sencillo, los objetos del DOM agregan eventos conforme carga el documento, no obstante al hacer un "replace with" estas reemplazando este elemento del DOM por uno nuevo que no tiene adjuntados los eventos que asignaste con jQuery para eso necesitas usar la "hermosa funcion live"

prueba asi..

Código PHP:
$('.pag').live('click',function() { 
        var 
actual trim($('.actualPage').text().split('of')); 
        var 
pag = ($('.pag').hasClass('next')) ? 'next' 'prev'
        
actual actual[0]; 
        $.
ajax({ 
            
urlbasePath+'index/inthepressajax'
            
type'POST'
            
data'actual='actual+'&pag='pag
            
dataType"html"
            
contentType"application/x-www-form-urlencoded"
            
success:function(data){ 
                $(
'#articles').empty(); 
                $(
'#articles').append(data);                 
            }, 
            
error:function(XMLHttpRequesttextStatuserrorThrown){alert('Error: '+XMLHttpRequest.responseText ' ' textStatus ' ' errorThrown);} 
        }); 
}); 
usa tus eventos asi y nunca tendras problemas con elementos creados "al vuelo" o reemplazados por llamadas ajax

Código PHP:
$('selector').live('click',function(){

}); 
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #6 (permalink)  
Antiguo 19/08/2010, 14:20
Avatar de faiverson  
Fecha de Ingreso: mayo-2005
Mensajes: 79
Antigüedad: 19 años
Puntos: 0
Respuesta: Problema con render en ajax (Zend)

Great! Tema resuelto.
__________________
Fabi... fighting versus the web

Etiquetas: ajax, render, zend
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 23:10.