Foros del Web » Programando para Internet » Jquery »

[jQuery] problema con .load() - una segunda llamada no funciona en IE

Estas en el tema de [jQuery] problema con .load() - una segunda llamada no funciona en IE en el foro de Jquery en Foros del Web. hola, qué tal ^^ os cuento.... he hecho un pequeño chatbox, si es que se le puede llamar así.. jeje. bueno, el caso es que ...
  #1 (permalink)  
Antiguo 28/11/2010, 17:00
Avatar de uikekarallo  
Fecha de Ingreso: diciembre-2009
Ubicación: Galicia
Mensajes: 338
Antigüedad: 14 años, 3 meses
Puntos: 16
[jQuery] problema con .load() - una segunda llamada no funciona en IE

hola, qué tal ^^

os cuento.... he hecho un pequeño chatbox, si es que se le puede llamar así.. jeje. bueno, el caso es que funciona correctamente en todos los navegadores actuales excepto, como no, en internet explorer.

el código es el siguiente...
Código PHP:
$('.comentariosDinamicos').load('scripts/nuevoComentario.php?nick='usuario +'&comentario='comentario_fix , function()
{
  $(
this).load('index.php #cargaComentarios' , function(){ $('.comentariosDinamicos').scrollTop(y); } ); // esta línea es la que no funciona en IE
  
comentario.val('').focus();
}); 
como véis es bien sencillo, al pulsar en el botón, la primera llamada la hace al php que registra los datos en la base de datos y la segunda es simplemente para recargar el div y que muestre los datos añadidos. pero tan fácil es que IE no lo entiende -.-"

y si lo pongo de esta manera
Código PHP:
$('.comentariosDinamicos').load('scripts/nuevoComentario.php?nick='usuario +'&comentario='comentario_fix);
$(
'.comentariosDinamicos').load('index.php #cargaComentarios' , function(){ $('.comentariosDinamicos').scrollTop(y); } );
comentario.val('').focus(); 
tampoco funciona...

alguna sugerencia? me está trayendo de cabeza... gracias :)
  #2 (permalink)  
Antiguo 29/11/2010, 05:23
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

fijate si no estas creando id repetidos
  #3 (permalink)  
Antiguo 29/11/2010, 09:15
Avatar de uikekarallo  
Fecha de Ingreso: diciembre-2009
Ubicación: Galicia
Mensajes: 338
Antigüedad: 14 años, 3 meses
Puntos: 16
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

pues.. creo que no, no se repite ningún id.

en el html...
Código PHP:
<div class="comentariosDinamicos">
  <div id="cargaComentarios">
    <?php
      $peticion 
"select * from comentarios order by id asc limit 300";
      
$datos mysql_query($peticion);
              
      while( 
$fdatos mysql_fetch_array($datos) )
      {
        echo 
'<p><strong>'.$fdatos['nick'].':</strong> '.$fdatos['comentario'];
      }
    
?>
  </div>
</div>
en el js...
Código PHP:
enviarComentario.click(function()
{
  $(
'.comentariosDinamicos').load('scripts/nuevoComentario.php?nick='usuario +'&comentario='comentario_fix , function()
  {
    $(
this).load('index.php #cargaComentarios' , function(){ $('.comentariosDinamicos').scrollTop(y); } ); // esta línea es la que no funciona en IE
    
comentario.val('').focus();
  });
}); 
a ver si tú ves algo que a mi se me escapa...
  #4 (permalink)  
Antiguo 29/11/2010, 10:35
Avatar de orchabel  
Fecha de Ingreso: marzo-2002
Ubicación: Hundido en un rincón...
Mensajes: 401
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

lo que veo es que cada vez que actualizas el div "comentariosDinamicos" con el load borras el div "cargaComentarios" a no ser que dentro de esa pagina php imprimas otra vez el div de carga comentarios .
__________________
BugHunter II
"si quieres un mañana mejor, piensa en ser mejor para un mañana"
  #5 (permalink)  
Antiguo 29/11/2010, 11:46
Avatar de uikekarallo  
Fecha de Ingreso: diciembre-2009
Ubicación: Galicia
Mensajes: 338
Antigüedad: 14 años, 3 meses
Puntos: 16
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

no logro comprenderte... en comentariosDinamicos se carga el php para la db, pero una vez cargado estoy llamando de nuevo al div cargaComentarios, que es justo lo que no se llega a ejecutar en ie.

si me lo puedes razonar un poco para que lo entienda te lo agradecería ^^
  #6 (permalink)  
Antiguo 29/11/2010, 12:36
Avatar de orchabel  
Fecha de Ingreso: marzo-2002
Ubicación: Hundido en un rincón...
Mensajes: 401
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

Intenta colocar el div fuera del otro del otro... intenta así:

<div class="comentariosDinamicos"></div>
<div id="cargaComentarios">
<?php
$peticion = "select * from comentarios order by id asc limit 300";
$datos = mysql_query($peticion);

while( $fdatos = mysql_fetch_array($datos) )
{
echo '<p><strong>'.$fdatos['nick'].':</strong> '.$fdatos['comentario'];
}
?>
</div>
__________________
BugHunter II
"si quieres un mañana mejor, piensa en ser mejor para un mañana"
  #7 (permalink)  
Antiguo 29/11/2010, 13:26
Avatar de uikekarallo  
Fecha de Ingreso: diciembre-2009
Ubicación: Galicia
Mensajes: 338
Antigüedad: 14 años, 3 meses
Puntos: 16
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

pues tampoco me funciona... ni separando los div.

el resultado es el mismo. en ie no se ejecuta el segundo .load(), ya sea haciendo el callback desde el primero o poniéndolos por separado.

voy a seguir probando... pero esto me está ocupando demasiado tiempo. a ver si se te ocurre algo más. de momento vamos descartando posibilidades. gracias ^^


edito: dato curioso. si en lugar de cargar index.php en la segunda llamada del .load() cargo 'style.css' funciona y se carga correctamente. ahora estoy más perdido que antes -.-" sigo investigando......

reedito: parece que lo único que no carga ie en la segunda llamada son los php. me carga cualquier otro tipo de archivo (css, html, js, asp...). pero php no -.-" maldito ie.... alguien sabe algo de esto?

Última edición por uikekarallo; 29/11/2010 a las 14:17
  #8 (permalink)  
Antiguo 29/11/2010, 15:40
Avatar de uikekarallo  
Fecha de Ingreso: diciembre-2009
Ubicación: Galicia
Mensajes: 338
Antigüedad: 14 años, 3 meses
Puntos: 16
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

ok, ya estoy harto de esto. curiosamente ie no me deja recargar otro archivo php en el .load(). ¿por qué? ni idea. cada día quedo más O_O con ie...

al final hago un location.reload() cuando el explorador sea ie y punto.

después de todo, la función principal no es chatear, sinó dejar mensajes a modo de guestbook. los que utilicen navegadores competentes, además, podrán chatear.

de todos modos, si a alguien se le ocurre algo, me gustaría que todos los usuarios gozasen de los mismos privilegios que los que no utilizamos ie.

un saludo y gracias :)
  #9 (permalink)  
Antiguo 29/11/2010, 18:04
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

posteá el html que traes en nuevoComentario.php, fijate con el firebug o ejecuta nuevoComentario.php y copia el código fuente html
  #10 (permalink)  
Antiguo 29/11/2010, 18:19
Avatar de uikekarallo  
Fecha de Ingreso: diciembre-2009
Ubicación: Galicia
Mensajes: 338
Antigüedad: 14 años, 3 meses
Puntos: 16
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

en realidad nuevoComentario.php no contiene ningún html, es sólo para insertar los valores en la base de datos.

no se me ocurre en qué puede influír... pero como tampoco se me ocurre ninguna otra cosa... ^^

ahí va el php:

Código PHP:
<?php
  session_start
();
  if( !
$_SESSION['usuario'] || $_SESSION['usuario'] == "invitado" ){ die('acceso restringido'); }

  
$nick $_GET['nick'];
  
$fecha date(Y.'-'.m.'-'.d);
  
$hora date(H.':'.m.':'.s);
  
$comentario htmlspecialchars($_GET['comentario']);
        
  include(
"../inc_db.php");
  
$peticion "insert into comentarios (nick , fecha , hora , comentario) values ('$nick' , '$fecha' , '$hora' , '$comentario')";
    
  if( 
mysql_query($peticion) )
  {
    
mysql_close($link);
    exit();
  }
  else
  {
    die(
'ha ocurrido un error');
  }
?>
una vez hecho esto, como callback tendría que cargarse otro php que es el que trae el div #cargaComentarios...

que yo vea ahí no hay nada que impida que se ejecute el callback. lo normal sería cargar eso y si eso carga, cargar lo siguiente. insisto en que ie da asco
  #11 (permalink)  
Antiguo 30/11/2010, 06:58
Avatar de orchabel  
Fecha de Ingreso: marzo-2002
Ubicación: Hundido en un rincón...
Mensajes: 401
Antigüedad: 22 años, 1 mes
Puntos: 1
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

Bueno yo tenía el mismo problema con un div interno que tenía el mismo nombre cuando se cargaba un PHP en el div exterior. Resulta que en el DOM de ie y de ópera (excepto Firefox que si funcionaba bien) no me cargaba la acción Click para ese div debido a que ya existía ese objeto al cargar el nuevo PHP y no lo reemplazaba (en Firefox si lo hace).

Como conclución exactamente antes de hacer el load del PHP me tocaba "destruir" el objeto DIV en el DOM y dejar que se creara nuevament al cargar, para que luego de que hubiera cargado, asignarle el código del click.

yo te recomendaría que removieras el objeto del DOM antes de hacer el load en comentarios dinamicos. Yo lo haría así.

$('#cargaComentarios').remove();

intenta a ver si es eso.
__________________
BugHunter II
"si quieres un mañana mejor, piensa en ser mejor para un mañana"
  #12 (permalink)  
Antiguo 30/11/2010, 07:37
Avatar de uikekarallo  
Fecha de Ingreso: diciembre-2009
Ubicación: Galicia
Mensajes: 338
Antigüedad: 14 años, 3 meses
Puntos: 16
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

Código PHP:
enviarComentario.click(function()
{
  $(
'#cargaComentarios').remove();
  
// etc...

nada... ya lo había probado, lo he vuelto a probar y tampoco :/ a mi se ya me han agotado las ideas -.-"
  #13 (permalink)  
Antiguo 30/11/2010, 11:53
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

en ie queda cacheado, probá enviando un parámetro random o usa el prarámetro no cache de ajax

$('.comentariosDinamicos').load('index.php?date='+ Date.parse(new Date())+' #cargaComentarios');

asi no queda cacheado
  #14 (permalink)  
Antiguo 30/11/2010, 14:28
Avatar de uikekarallo  
Fecha de Ingreso: diciembre-2009
Ubicación: Galicia
Mensajes: 338
Antigüedad: 14 años, 3 meses
Puntos: 16
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

nada... tampoco se soluciona de esta manera. tiene que ser otra cosa... pero no caigo en qué!

argh.. de verdad, gracias por romperos la cabeza conmigo ^^
mientras no encuentre que demonios falla, lo dejo así... aunque no es ni de lejos lo más acertado:

Código PHP:
enviarComentario.click(function()
{
  if( 
comentario.val() != "" )
  {
    $(
'.comentariosDinamicos').load('scripts/nuevoComentario.php?nick='usuario +'&comentario='comentario_fix , function()
    {
      if( 
navigator.appName == "Microsoft Internet Explorer" )
      {
        
location.reload();
      }
      else
      {
        $(
this).load('index.php #cargaComentarios' , function(){ $('.comentariosDinamicos').scrollTop(y); });
        
comentario.val('').focus();
      }
    });
  }
  else
  {
    
comentario.focus();
  }
}); 
  #15 (permalink)  
Antiguo 01/12/2010, 06:04
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

debe ser otra cosa, yo hago esos 2 load el primero a un archivo en blanco y el otro al mismo archivo con el html que posteaste y funciona bien en ie 6, 7 y 8
  #16 (permalink)  
Antiguo 01/12/2010, 11:57
Avatar de uikekarallo  
Fecha de Ingreso: diciembre-2009
Ubicación: Galicia
Mensajes: 338
Antigüedad: 14 años, 3 meses
Puntos: 16
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

uhm.. y los 2 archivos son php? porque si en el segundo load cargo un html funciona... y eso es precisamente lo que más me desconcierta... un archivo con extensión html si y uno con extensión php no? :/
  #17 (permalink)  
Antiguo 01/12/2010, 18:00
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

Cita:
uhm.. y los 2 archivos son php?
no entiendo, si vos estas tratando de cargar index.php tiene existir ese index.php

hace una cosa, create un index.php que tiene tus div que posteaste .comentariosDinamicos y #cargaComentarios otro php que no tenga nada, solo para simular el primer load, tu jquery que sea solo load sin ningún otro método como focus o scroolto y de esa forma probas
  #18 (permalink)  
Antiguo 15/01/2012, 10:52
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: [jQuery] problema con .load() - una segunda llamada no funciona en IE

Dany_s tiene razon, con un random se soluciona el problema y ya carga normalmente, lo q hize yo fue así:

Código Javascript:
Ver original
  1. $("#Nodo").load("index.php?val=" + Math.random());

y me cargo sin ningun problema, incluso despues de hacerle varias peticiones, el #Nodo lo pueden cambiar por el selector y el nombre que necesiten

Etiquetas: llamada, load
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:28.