Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/11/2011, 06:45
Avatar de cuasatar
cuasatar
 
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 7 meses
Puntos: 181
Respuesta: Problemas con ajax usando IE

Esta es la función javascript que maneja el ajax

Código HTML:
function objetoAjax(){
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  return xmlhttp;
}

function Pagina(nropagina){
 //donde se mostrará los registros
 divContenido = document.getElementById('contenido');
 
 ajax=objetoAjax();
 //uso del metodo GET
 //indicamos el archivo que realizará el proceso de paginar
 //junto con un valor que representa el nro de pagina
 ajax.open("GET", "paginador.php?pag="+nropagina);
 ajax.onreadystatechange=function() {
	    if(ajax.readyState==1){
                       divContenido.innerHTML = '<img src="ajax-loader.gif" border="0"/>Cargando, espere por favor...';
                        //modificamos el estilo de la div, mostrando una imagen de fondo
                       }
  if (ajax.readyState==4) {
   //mostrar resultados en esta capa
   divContenido.innerHTML = ajax.responseText
  }
 }
 //como hacemos uso del metodo GET
 //colocamos null ya que enviamos 
 //el valor por la url ?pag=nropagina
 ajax.send(null)
}

Esta es la que se encarga de hacer la paginacion de las hojas

Código PHP:
<?php
 
require('conexion.php');
 
$RegistrosAMostrar=1;

 
//estos valores los recibo por GET
 
if(isset($_GET['pag'])){
  
$RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
  
$PagAct=$_GET['pag'];
  
//caso contrario los iniciamos
 
}else{
  
$RegistrosAEmpezar=0;
  
$PagAct=1;
 }

 
$Resultado=mysql_query("SELECT * FROM noticias ORDER BY idNoticias DESC LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$con);
 echo 
"<table border='0' cellspacing='0' cellpadding='0' >";
 while(
$MostrarFila=mysql_fetch_array($Resultado)){
  echo 
"<tr>";
  echo 
"<td class='titulo'>".$MostrarFila['titulo']."</td>";
  echo 
"</tr>";
     echo 
"<tr>";
     echo 
"<td><hr class='titulo'/></td>";
     echo 
"</tr>";
   echo 
"<tr>";
  echo 
"<td class='parrafo'>".$MostrarFila['contenido']."</td>";
  echo 
"</tr>";
 }
 echo 
"</table>";

 
//******--------determinar las páginas---------******//
 
$NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM noticias",$con));
 
$PagAnt=$PagAct-1;
 
$PagSig=$PagAct+1;
 
$PagUlt=$NroRegistros/$RegistrosAMostrar;

 
//verificamos residuo para ver si llevará decimales
 
$Res=$NroRegistros%$RegistrosAMostrar;
 
// si hay residuo usamos funcion floor para que me
 // devuelva la parte entera, SIN REDONDEAR, y le sumamos
 // una unidad para obtener la ultima pagina
 
if($Res>0$PagUlt=floor($PagUlt)+1;
 
 
//desplazamiento
 
echo "<a onclick=\"Pagina('1')\" class='enlaces' href='#inicio'>Primero</a> ";
 if(
$PagAct>1) echo "<a onclick=\"Pagina('$PagAnt')\" class='enlaces' href='#inicio'>Anterior</a> ";
 if(
$PagAct<$PagUlt)  echo " <a onclick=\"Pagina('$PagSig')\" class='enlaces' href='#inicio'>Siguiente</a> ";
 echo 
"<a onclick=\"Pagina('$PagUlt')\" class='enlaces' href='#inicio'>Ultimo</a>";
 echo 
"<br/>";

  echo 
"<p><strong class='enlaces'>P&aacute;gina ".$PagAct."/".$PagUlt."</strong></p>";
  echo 
"<p><a class='enlaces' href='#inicio'>Volver al inicio de la p&aacute;gina.</a></p>";
?>

Pues aunque no me gusta usar IE uno tiene uno que pensar en todos los usuarios y tratar de que las paginas sean visibles en lo posible en todos los navegadores. Lo de IE6 no me preocupa en si, pero igual como la versión que uso de IE para pruebas es la 8 y esa la usa mucha gente me parece extraño que no sirva. La pagina si carga, pero si se intenta pasar de noticia empieza a molestar.

Gracias de antemano por la colaboración. Quedo pendiente de cualquier comentario.