Foros del Web » Programando para Internet » Javascript »

Refresco de sitio con ajax

Estas en el tema de Refresco de sitio con ajax en el foro de Javascript en Foros del Web. Hola foro, escribo porque tengo un pequeño problema, resulta que tengo un sitio web que estoy desarrollando pero me he topado con un problemita. Voy ...
  #1 (permalink)  
Antiguo 13/07/2012, 00:27
Avatar de lacho  
Fecha de Ingreso: enero-2008
Mensajes: 26
Antigüedad: 16 años, 3 meses
Puntos: 0
Busqueda Refresco de sitio con ajax

Hola foro, escribo porque tengo un pequeño problema, resulta que tengo un sitio web que estoy desarrollando pero me he topado con un problemita.

Voy por partes y codigo para contextualizar a ver si alguien me puede indicar donde esta el error.

tengo un index donde cargo la pagina principal, resulta que en este index tengo un div denominado ventana, en donde cargo el contenido deseado y va algo asi (lo pongo simplificado para ver solo lo que nos da el camino hasta el problema)

Código PHP:
<table width="910" border="0" >
  <tr valign="top" align="center">
echo "
        <td height='176' colspan='2'><img src='recursos/menu_s.png' alt='menu' width='878' height='176' border='0' usemap='#Map'>
          <map name='Map' id='Mapa'>
          <area shape='rect' coords='303,144,389,166' href='index.php?task=pry' target='_self' alt='Proyectos'>
          </map>
        </td>";
  </tr>
  <tr>
    <td align="center" valign="top">&nbsp;</td>
    <td valign="top" height="460"><div id='ventana'><?php
        
require_once 'source/ClSitioWeb.php';
        
$print= new SitioWeb;
        switch(
$_GET['task'])
        {            
            case 
'pry':
                
$print->ImprimirFrmProyectos();
            break;            
        }
    
?></div></td>
  </tr>
</table>
aqui como podemos ver hacemos una instancia del sitio web y cuando el url del mapa traiga la tarea 'pry' ejecuta la lista de categorias de proyectos. Pues bien, resulta que he usado un plug in para que el scrollbar se vea mejor y ese es en si mi problema, yo selecciono uno y veo todos los proyectos ejecutados dentro de esa categoria, hasta alli la barra funciona bien, pero al hacer el salto al contenido del proyecto esta aparece pero no funciona, no se si es porque uso ajax para generar el nuevo contenido... bueno va algo asi despues de la llamada del codigo anterior (ClSitioWeb.php)

Código PHP:
public function ImprimirFrmProyectos()
    {
        if (isset(
$_GET['id']))
        {
            switch(
$_GET['id'])
            {
                case 
'1':
                if (isset(
$_GET['su']))
                {
                    
$this->ImprimirProyectoConstruccionDisenio($_GET['su']);
                }
                else
                    {
$this->ImprimirFrmConstruccionDisenio();}
                break;
            }
        }
        else
        {
        echo 
"<table width='880' align='right'  border='0'>";
        echo 
"<tr>";
            echo 
"<td valign='top'>";
            echo 
"<div id='Galeria' align='right'><br>";
                
$this->ImprimirGaleriaPrincipal();
            echo 
"<p align='right'><img src='recursos/time.png' alt='' width='127' height='90' /><p></div>";
            echo 
"</td>";
            echo 
"<td width='400' valign='top' align='left'>";
            echo 
"<div id='FrameDatos'>";
                echo 
"<table width='325' border='0'>";
                echo 
"<tr>";
                    echo 
"<td rowspan='5' valign='top'><div id='FrameDatos'><img src='recursos/AdornoMenu.png' alt='SubMenu' width='325' height='450' /></div></td>";
                    echo 
"<td height='90'><a class='MenuSecundario' name='FrameDatos' href='frame.php?task=pry&amp;id=1' target='_parent'>Contrucci&oacute;n y Dise&ntilde;o</a></td>";
        echo 
"</table>";
public function 
ImprimirFrmConstruccionDisenio()
    {    
        echo 
"<script type='text/javascript'>
                var mask = document.getElementById('scroll-mask');
                var content = document.getElementById('scroll-content');
                new Dragdealer('scroll-bar',
                {
                    horizontal: false,
                    vertical: true,
                    yPrecision: content.offsetHeight,
                    animationCallback: function(x, y)
                    {
                        var margin = y * (content.offsetHeight - mask.offsetHeight);
                        content.style.marginTop = String(-margin) + 'px';
                    }
                });
                </script>    
        "

        echo 
"<table width='404' border='0' >";
        echo 
"<tr>";
            echo 
"<td align='right' valign='middle'><img src='recursos/TemaUno.png'></td>";
            echo 
"<td valign='middle' width='80' height='95'><br><a class='MenuSecundario' href='index.php?task=pry&id=1'>Contrucci&oacute;n y Dise&ntilde;o</a></td>";
        echo 
"</tr>"//colspan='2'
        
echo "<tr><td valign='top'  align='left'>";
        echo 
"<div class='top-spaced right-float'>
            <div id='scroll-bar' class='dragdealer rounded-cornered'>
            <div class='red-bar handle'></div>
            </div>
        </div>"
;
        
//echo "<div id='scroll'>";
            
echo "<div id='scroll-mask'><div id='scroll-content'><p>";
            echo 
"<ul type='circle'>";
            echo 
"<li><a class='EnlaceTipo_1' href=javascript:EjecutarURL('frame.php?task=pry&id=1&su=11','ventana')>Dise&ntilde;o y Construcci&oacute;n de Oficinas Administrativas, Laboratorios, Auditorio y Aulas de la Universidad Francisco Gavidia</a></li>";
            echo 
"</ul>";
            echo 
"</p></div></div>";
        echo 
"</td>";
        echo 
"<td>&nbsp;</td></tr>";
        echo 
"</table>";
    }
public function 
ImprimirProyectoConstruccionDisenio($seleccion)
    {
echo 
"<script type='text/javascript'>
                var mask = document.getElementById('scroll-mask');
                var content = document.getElementById('scroll-content');
                new Dragdealer('scroll-bar',
                {
                    horizontal: false,
                    vertical: true,
                    yPrecision: content.offsetHeight,
                    animationCallback: function(x, y)
                    {
                        var margin = y * (content.offsetHeight - mask.offsetHeight);
                        content.style.marginTop = String(-margin) + 'px';
                    }
                });
                </script>    
        "

        switch(
$seleccion)
        {
            case 
'11':
                        echo 
"<input type='hidden' id='elurl' value='frame.php?task=pry&id=1&su=11'/>";
        echo 
"<input type='hidden' id='img' value='1'/>";
        echo 
"<center>";
        echo 
"<table  border='1' hspace='0' cellpadding='0' cellspacing='4'>";
        echo 
"<tr>";
            echo 
"<td colspan='3' align='right'><a href=javascript:BackProyecto('ventana',12);><img src='recursos/atras.png'></a><a href=javascript:NextProyecto('ventana',12);><img src='recursos/adelante.png'></a><a href='index.php?task=pry'><img src='recursos/cerrar.png'></a></td>";
        echo 
"</tr>";
          echo 
"<tr valign='top'>";
            echo 
"<td rowspan='2' align='center' class='ColorGaleriaDerecha' >"
            echo 
"<br>algo;
            echo "
</td>";    
            echo "
<td valing='middle' align='right' width='80' height='79'>una imagen</td>";
            echo "
<td valign='middle' width='80' height='79'><class='MenuSecundario' href='index.php?task=pry&id=1'>tema</a></td>";
          echo "
</tr>";
        echo "
<tr>";
            echo "
<td>";
            echo "
<div class='top-spaced right-float'>
            <
div id='scroll-bar' class='dragdealer rounded-cornered'>
            <
div class='red-bar handle'></div>
            </
div>
            </
div>";
            echo "
<div id='scroll-mask'><div id='scroll-content'>";
            echo "
<p align='justify' class='Tema_1'>";
            echo "
tema";
            echo "
</p>";
            echo "
<p align='right' class='Monto_1'>";
                echo "
Monto : $ <br>";
                echo "
Area de Construcción :  m2<br>";
                echo "
Período de Ejecución Septiembre 2010 a Diciembre 2011<br>";
                echo "
Propietario ";
            echo "
</p>";
            echo "
<p align='justify' class='Descripcion_1'>";
            echo "
el contenido del tema";
            echo "
</p>";
            echo "
</div></div></td>";
            echo "
<td>&nbsp;</td>";
        echo "
</tr>";
        echo "
</table>";
        echo "
<center>";
                        break;
                }
      } 
ahora bien para contextualizar
frame.php
Código PHP:
require_once 'source/ClSitioWeb.php';
        
$print= new SitioWeb;
        switch(
$_GET['task'])
        {
            case 
'pry':
            if (isset(
$_GET['id']))
            {
                if (isset(
$_GET['su']))
                {
                    
$print->ImprimirFrmProyectos($_GET['id'],$_GET['su']);
                }
                else
                {
$print->ImprimirFrmProyectos($_GET['id']);}
            }
            break;            
        } 
EjecutarURL
Código:
function EjecutarURL(url, id_contenedor)
{
	var pagina_requerida = false
		if (window.XMLHttpRequest) 
		{// Si es Mozilla, Safari etc
			pagina_requerida = new XMLHttpRequest()
		}
		else if (window.ActiveXObject)
		{ // pero si es IE
			try 
			{
				pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP")
			} 
			catch (e)
			{ // en caso que sea una versión antigua
				try
				{
					pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP")
				}
				catch (e){}
			}
		}
		else
		return false
		pagina_requerida.onreadystatechange=function()
		{ // función de respuesta
			cargarpagina(pagina_requerida, id_contenedor,url)
		}
		pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
		pagina_requerida.send(null)
}
	// poniendo en su sitio en la pagina xhtml
function cargarpagina(pagina_requerida, id_contenedor,url)
{
	if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1))
		{		document.getElementById(id_contenedor).innerHTML=pagina_requerida.responseText;	
		}	
}
entonces en si el problema se da en la impresion de ImprimirProyectoConstruccionDisenio, ya que el contenido que se muestra en el php se hace, sin embargo no funciona el script del funcionamiento del scroll.
No se si alguien me puede hechar la mando para poder identificar el problema y porque no ejecuta el script de la funcionalidad
  #2 (permalink)  
Antiguo 14/07/2012, 02:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 21
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Refresco de sitio con ajax

Puede que el problema sea que estan mal concatenado los retornos de carro.
POR EJEMPLO:
Código PHP:
Ver original
  1. echo "" //abro y cierro comillas y si quiero seguir con el echo en otra linea
  2. ."codigo html en esta linea" //coloco un punto luego abro comillas escribo el codigo y cierro comillas
  3. ."codigo html en esta otra" // coloco un punto luego abro comillas escribo el codigo y cierro comillas
  4. .""; //para finalizar el echo cierro con punto y coma.

Espero sirva el comentario.

Última edición por racba; 14/07/2012 a las 02:48
  #3 (permalink)  
Antiguo 15/07/2012, 01:01
Avatar de lacho  
Fecha de Ingreso: enero-2008
Mensajes: 26
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Refresco de sitio con ajax

Gracias por el aporte, probare hacerlo de esta manera para ver si me funciona, aviso si funciona la recomendacion.
  #4 (permalink)  
Antiguo 15/07/2012, 03:42
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Refresco de sitio con ajax

Hola:

Las respuestas Ajax son texto plano (responseText) o una estructura XML (responseXML)... o sea cabeceras text/plain o text/xml, y javascript es text/javascript, así que por norma los scripts que llegan por Ajax merecen un trato especial... si usas una librería deberías informarte de como ejecutar esos scripts... si ese es el caso podemos mover el tema al foro de frameworks y plugins donde te podrían asesorar mejor.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: ajax, javascript+html, php, poo
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:02.