Foros del Web » Programando para Internet » Javascript »

Evitar redirección desde vinculo

Estas en el tema de Evitar redirección desde vinculo en el foro de Javascript en Foros del Web. Hola La página tiene algunos vinculos, al cliquear sobre alguno de ellos, se ejecuta el Ajax. El problema está en que si la página se ...
  #1 (permalink)  
Antiguo 12/08/2008, 05:57
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Evitar redirección desde vinculo

Hola

La página tiene algunos vinculos, al cliquear sobre alguno de ellos, se ejecuta el Ajax. El problema está en que si la página se llama mostrar.html, al pinchar en el vinculo me lleva a mostrar.html#. ¿Como puedo evitar que se ejecute la redirección?

Código PHP:
function addEvent(elemento,nomevento,funcion)
{
  if (
elemento.attachEvent)
  {
    
elemento.attachEvent('on'+nomevento,funcion);
    return 
true;
  }
  else  
    if (
elemento.addEventListener)
    {
      
elemento.addEventListener(nomevento,funcion,false);
      return 
true;
    }
    else
      return 
false;
}

function 
creaAjax() {
var 
objetoAjax=null;
    try
      {
  
// Firefox, Opera 8.0+, Safari
      
objetoAjax=new XMLHttpRequest();
      }
    catch (
e)
      {
  
// Internet Explorer
          
try
            {
            
objetoAjax=new ActiveXObject("Msxml2.XMLHTTP");
            }
          catch (
e)
            {
            
objetoAjax=new ActiveXObject("Microsoft.XMLHTTP");
            }
      }
    return 
objetoAjax;

Código:
<a href="#" id="782">Modificar</a>
<br>
<a href="#" id="781">Modificar</a>

<br><br><br>
<div id="post_782"></div>
<div id="post_781"></div>
Código PHP:
var ref = new Array(781,782);
for (var 
0ref.lengthi++) {

  
addEvent(document.getElementById(ref[i]),'click',function(m) {
           
var 
ajax=creaAjax();
var 
objeto document.getElementById('post_'+this.id);
ajax.open ('GET''modificar.asp?sid='+this.idtrue);
ajax.onreadystatechange = function() {


if (
ajax==null){
        
alert ("Tu navegador web no soporta AJAX!");
        return;
}



         if (
ajax.readyState==|| ajax.readyState==|| ajax.readyState==3) {
                                      
objeto.innerHTML "Cargando .......";
         }
         else if (
ajax.readyState==4){
                   if(
ajax.status==200){

                                             
objeto.innerHTML += ajax.responseText;
                   }
                   else if (
ajax.status==404)
                                             {

                            
objeto.innerHTML "La dirección no existe";
                                             }
                                             else
                                             {
                            
objeto.innerHTML "Error: " ajax.status;
                                             }
                                    }
                  }
         
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         
ajax.send(null);
         return
})    

Gracias
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #2 (permalink)  
Antiguo 12/08/2008, 06:44
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Evitar redirección desde vinculo

Anulando la acción del click:
Código PHP:
<a onclick='return false'
Espero que te sirva.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 12/08/2008, 07:46
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Evitar redirección desde vinculo

Hola

Eso es lo que uso, pero querría, si es posible evitar la redirección desde la función

Gracias
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 12/08/2008, 08:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Evitar redirección desde vinculo

No entendí muy bien, puedes poner la función luego ; y luego return false. ¿O que es exactamente lo que quieres hacer?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 12/08/2008, 13:56
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Evitar redirección desde vinculo

Hola, y gracias por responder

Lo que hago es hacer la llamada a la función con un manejador de eventos.

Código PHP:
function addEvent(elemento,nomevento,funcion)
{
  if (
elemento.attachEvent)
  {
    
elemento.attachEvent('on'+nomevento,funcion);
    return 
true;
  }
  else  
    if (
elemento.addEventListener)
    {
      
elemento.addEventListener(nomevento,funcion,false);
      return 
true;
    }
    else
      return 
false;
}



var 
ref = new Array(781,782);
for (var 
0ref.lengthi++) {

  
addEvent(document.getElementById(ref[i]),'click',function(m) {
           
var 
ajax=creaAjax();
var 
objeto document.getElementById('post_'+this.id);
ajax.open ('GET''modificar.asp?sid='+this.idtrue);
ajax.onreadystatechange = function() {


if (
ajax==null){
        
alert ("Tu navegador web no soporta AJAX!");
        return;
}



         if (
ajax.readyState==|| ajax.readyState==|| ajax.readyState==3) {
                                      
objeto.innerHTML "Cargando .......";
         }
         else if (
ajax.readyState==4){
                   if(
ajax.status==200){

                                             
objeto.innerHTML += ajax.responseText;
                   }
                   else if (
ajax.status==404)
                                             {

                            
objeto.innerHTML "La dirección no existe";
                                             }
                                             else
                                             {
                            
objeto.innerHTML "Error: " ajax.status;
                                             }
                                    }
                  }
         
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         
ajax.send(null);
         return
})    

Y lo que quisiera saber es si es posible anular la acción del evento en la función del manejador, de tal forma que cuando pulse el enlace ejecute la función Ajax pero que no vuelva a cargar la misma página. Lo que te comenté anteriormente de que cuando pulsas sobre el vinculo se vuelve a cargar la página.

Gracias
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 19:47.