Comunidad de diseño web y desarrollo en internet online

remove() no remueve nada...

Citar            
MensajeEscrito el 12 May 2013 02:31 pm
Hola qué tal, de nuevo dando lata por estos lugares, jajaja...

Ojala alguien me pueda ayudar, explico: Quiero borrar a un usuario cuando se le de clic en la X, sencillito eh, pero al hacer click en la equis no borra al usuario, aunque mi consola de mozilla dice que todo esta bien no veo que se elimine el <li></li> donde esta el usuario.

Mi codigo:

Código HTML :


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Borrar datos al instante</title>

<script src="jquery-1.9.1.js"></script>
<script>

function suscriptores(){
   // si se presiona el vinculo de X, ejecutar borrar_usuario()
   $('#suscriptores li a:first-child').click(borrar_usuario);
}
function borrar_usuario(){
   var id=this.href.replace(/.*=/,'');
   this.id='delete_link_'+id;
   if(confirm('¿Seguro qu&eacute; desea eliminar a este usuario?'))
   $.getJSON('borrar.php?ajax=true&id='+id,remober_columna);
   return false;
}
function remober_columna(data){
   if(!data.success)return alert(data.error);
   $('#delete_link_'+data.id).closest('li').remove();
}

$(document).ready(suscriptores);
</script>


</head>

<body>

<ul id="suscriptores">
   <li><a href="borrar.php?id=1">[X]</a>
       <a href="usuario.php?id=1">Paola Garcia</a>
    </li>
    <li><a href="borrar.php?id=2">[X]</a>
       <a href="usuario.php?id=2">David Suarez</a>
    </li>
    <li><a href="borrar.php?id=3">[X]</a>
       <a href="usuario.php?id=3">Marian Coronado</a>
    </li>
    <li><a href="borrar.php?id=1">[X]</a>
       <a href="usuario.php?id=1">Perla Navarro</a>
    </li>
    <li><a href="borrar.php?id=5">[X]</a>
       <a href="usuario.php?id=5">Jennifer Mass</a>
    </li>
</body>
</html>






Y mi codigo en el lado del servidor:

Código PHP :


<?php
$id=(int)$_REQUEST['id'];
echo ( !($id%2) )?
"{'id':$id,'success':1}":
"{'id':$id,'success':0,'error':'No se puede borrar este usuario'}";

?>




Espero que alguien me pueda decir donde heche a perder el codigo, jajajaja...

Saludos y gracias

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 May 2013 12:34 pm
Esto:

Código Javascript :

 $('#suscriptores li a:first-child').click(borrar_usuario);

Es incorrecto, creo que has querido hacer:

Código Javascript :

 $('#suscriptores li a:first-child').click(function () { borrar_usuario(); });


En JavaScript los identificadores de una función no son más que punteros, cuando pones un identificador que apunta a una función, ésta se ejecuta si explícitamente así lo indicas con los paréntesis al final. De otra forma, JS asume que estás queriendo pasar el puntero a la función y no queriendo ejecutar la misma.

Por otro lado el método .click() de JQuery espera una función anónima como parámetro, no un puntero a una función.

Algo similar estás haciendo con .ready() y suscriptores().

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 25 May 2013 04:54 am
Gracias por responder DriverOp, hice los cambios que mencionaste y empezaron a fallar otras cosas, lo corregi todo y siguio sin borrar nada.
Revisando Firebug todo parece correcto, llama a la pagina que pido, regresando una respuesta valida pero no brinca a la siguiente funcion. osea que todo se detiene aqui:

Código Javascript :


$.getJSON('borrar.php?ajax=true&id='+id,remober_columna);
   return false;



si elimino la linea de return false; me abre la pagina borrar.php mostrandome el resultado, osea que si abre la pagina que solicito y hace lo que digo, pero no deberia funcionar asi.
Tengo entendido que con el $.getJSON('algo.htm',funcion) deberia abrir la pagina, lo que haya en esa pagina regresarlo y ejecutar la funcion, en mi caso remober columna, pero no lo hace, ahi se detiene todo y no se porque, ojala pudieras explicarme a mas detalle lo que sucede.

Gracias!

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 May 2013 02:22 pm
¿Abrir la página?, no. getJSON() no hace eso.
Lo que esta función hace es un petición al servidor y espera recibir una estructura JSON la cual pasa como parámetro a la función que le indicas en el segundo parámetro de getJSON(). Además, tienes mal la sintaxis de la misma. Cometes el mismo error que ya había comentado.
Debería ser:

Código Javascript :

$.getJSON('borrar.php?ajax=true&id='+id, function (data) { remober_columna(data) });

En "data" tienes la estructura JSON que el servidor envió.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

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