Comunidad de diseño web y desarrollo en internet online

problema al pulsar un boton o un link javascript con IE

Citar            
MensajeEscrito el 11 Oct 2012 08:22 pm
hola amigos del foro. tengo el siguiente problema:
estoy elaborando un sistema de noticias y comentarios en el cual cuando presiono el boton para enviar el comentario, no se ejecuta la funcion en ajax, pero sí guarda los datos en la base de datos. si presiono por segunda vez el boton, se ejecuta todo con normalidad. Lo raro es que ocurre con normalidad en todos los navegadores, a excepcion de internet explorer. lo mismo me ocurre cuando quiero eliminar un comentario, tengo que presionar dos veces el link. les dejo el código javascript con las funciones correspondientes:

Código Javascript :

function EliminaComentario(id) {
            $.ajax({
                type: "POST",
                url: "elimina_comentario.php",
                data: "id_comentario="+id,
                success: function(){
                    console.log('comentario_'+id);
                    $('#comentario_'+id).slideUp("slow", function() {$(this).remove();});
                    $('#comentario_'+id).fadeOut();
                    
                }
            });
        }


Código Javascript :

function NuevoComentario(id,nombre_usuario,fecha,foto) {
                comentario = document.getElementById('texto_'+id).value;//valor caja texto noticia
                String.prototype.trim = function(){ 
                                                      return this.replace(/^\s+|\s+$/g, ""); 
                                                  };
                if(comentario.trim().length != 0){
                    $.ajax({
                        type: "POST",
                        url: "ingresa_comentario.php",
                        data: "id_news="+id+"&comentario="+comentario+"&fecha="+fecha,
                        success: function(data){
                        
                           console.log(data);
                            $('#texto_'+id).attr("value", "");
                            $('#contenedor_c_'+id).append('<tr><td><div id="comentario_'+data+'" class="comentarios"><table><tr><td rowspan=2><img src="'+foto+'" alt=Perfil height="32" width="32" /></td><td><div class="EnviadoPor">Enviado por: <b>'+nombre_usuario+'</b></div></td><td><div class="FechaComentario">Fecha: '+fecha+'</div></td><td> <a id="elimina_'+data+'" href="" onClick="EliminaComentario('+data+');return false;" class="eliminar">eliminar<a/> </td></tr> <tr><td><div class="comentario">'+comentario+'</div> </td> </tr> </table></div> </td></tr>');
                     }
                    });
                    
                }
                else{
                    alert("Debe llenar los datos.");
                }
            }



ojala que puedan responderme mi duda, tengo varios dias tratando de resolver esto y aun no encuentro una respuesta.
muchas gracias de antemano.

Por kaiser_amrod

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Oct 2012 12:59 am
estas usando algun framework??como jquery o mootools?? ya que ie es muy caprichoso en algunas funciones javascript por ejemplo para mi esto es raro en IE

String.prototype.trim

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Oct 2012 01:52 am

kaiser_amrod escribió:

...cuando presiono el boton para enviar el comentario, no se ejecuta la funcion en ajax, pero sí guarda los datos en la base de datos...


Y si no se ejecuta la función AJAX como guardas los datos???

Postea el HTML...

¿Estara tomando el action del form?...

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 12 Oct 2012 12:13 pm
kaiser_amrod:
Primero deberías verificar si IE devuelve un error y cuál es.

tuadmin:
Lo que señalas es perfectamente válido en cualquier navegador que ejecute JavaScript. La sentencia que señalas no hace más que agregar un método nuevo al objeto String usando prototipado, lo cual es básico en JS.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 12 Oct 2012 12:46 pm

tuadmin escribió:

estas usando algun framework??como jquery o mootools?? ya que ie es muy caprichoso en algunas funciones javascript por ejemplo para mi esto es raro en IE

String.prototype.trim


hola, gracias por responder. efectivamente estoy usando jquery, esa funcion la uso para eliminar los espacios en blanco al principio y al final del texto del comentario a introducir. lo utilicé porque estaba más a mano, no se si eso será lo que genera el problema.
saludos.

Por kaiser_amrod

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Oct 2012 12:59 pm
DriverOP:

lo raro es que no me lanza ningun error en la consola al momento de hacer click la primera vez en el boton o en el link.


SinSemilla:
este es el código html que llama a las funciones javascript:

Código HTML :

<table width="330" align="left">
    <tr>
        <td><textarea name="texto" id="texto_<?echo $idnews;?>" class="caja"></textarea></td>
    </tr>
    <tr>
        <td>
            <input type="button" class="EnviarComentario" id="Enviar<?echo $idnews;?>" value="Enviar" onclick="NuevoComentario(<?php echo $idnews;?>,'<?php echo $nombreUsuario;?>','<?php echo $fecha;?>','<?php echo $foto_coment;?>');return false"/>
        </td>
    </tr>
</table>

Por kaiser_amrod

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Oct 2012 04:35 pm
La verdad es que el problema no me es evidente.

Solamente señalar que IE8 no tiene el objeto console porque lo que no puedes hacer console.log() pero eso no sería el problema que planteas.

Lo otro que puedes hacer es probar haciendo un trace del código en IE. Lo puedes hacer usando la Herramientas de Desarrollo (presionando F12), elije "Script" y luego selecciona el archivo .js donde está el código que parece problemático.

Haciendo clic en el borde numerado de la ventana puedes poner un break en el código y ejecutar paso a paso con F10.

... O puedes poner todo esto en línea en algún servidor así probamos por nuestra cuenta.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 16 Oct 2012 03:06 pm
hola, gracias por responder a mi tema. hice varias pruebas, incluso con ie9 se puede ver el log, pero no pasa nada.

Código Javascript :

comentario = document.getElementById('texto_'+id).value;

esta linea de codigo la ejecuta bien.

Código Javascript :

if(comentario.trim().length != 0)

si existe un comentario ejecuta bien esta linea de código, pero lo siguiente es lo que no funciona.

Código Javascript :

$.ajax({

                        type: "POST",

                        url: "ingresa_comentario.php",

                        data: "id_news="+id+"&comentario="+comentario+"&fecha="+fecha,

                        success: function(data){

                        

                           console.log(data);

                            $('#texto_'+id).attr("value", "");

                            $('#contenedor_c_'+id).append('<tr><td><div id="comentario_'+data+'" class="comentarios"><table><tr><td rowspan=2><img src="'+foto+'" alt=Perfil height="32" width="32" /></td><td><div class="EnviadoPor">Enviado por: <b>'+nombre_usuario+'</b></div></td><td><div class="FechaComentario">Fecha: '+fecha+'</div></td><td> <a id="elimina_'+data+'" href="" onClick="EliminaComentario('+data+');return false;" class="eliminar">eliminar<a/> </td></tr> <tr><td><div class="comentario">'+comentario+'</div> </td> </tr> </table></div> </td></tr>');

                     }

                    });

                    

                }


esto no funciona cuando se presiona el boton por primera vez, despues no hay problemas.

Por kaiser_amrod

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Oct 2012 03:30 pm
prueba usando alert() en lugar de console.log(); para que veas en pantalla si las acciones del boton son tomados correctamente

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 16 Oct 2012 03:42 pm
idem. le puse un alert a los datos del comentario y estan correctamente enviados y si presiono por 2da vez el boton se muestran los alert del proceso de visualizacion del comentario.

Por kaiser_amrod

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Oct 2012 05:57 pm
prueba poniendo los eventos ,en "complete" y no en "success", y veas si los mensajes son tomados , este erro ta rarisimo jeej, siera bueno que lo subas a algun servidor remoto para que lo podamos ver y probar nostros mismos

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 16 Oct 2012 07:39 pm
va mejorando un poco la cosa. ahora realiza la insercion de los comentarios, esto lo hice cambiando success por complete, como habias mencionado. ahora el problema esta en que los comentarios recien subidos no me los deja eliminar, puesto que la data no es la correcta. le hice un alert a la data y me arrojo "[object Object]", y no se como interpretarla. saludos y gracias.

Por kaiser_amrod

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Oct 2012 04:38 pm
al parecer es cosa del retorno del script PHP, como esta retornando los datos??es un array json??bueno mira para estos casos lo mejor es ver que esta pasando entre la comunicacion del ajax y php , y para eso seria muy bueno que aprendas a usar FIREBUG si usas mozilla Firefox, o de Chrome lleva ya incorporado su inspector de codigo, con esas herramientas desmenuzaras lo que esta pasando en realidad

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.