PHP - Enviar Dato generado por un while via ajax

 
Vista:

Enviar Dato generado por un while via ajax

Publicado por Carlos (2 intervenciones) el 23/01/2018 05:26:03
Buenas noches...
no se si alguno de uds me puedan ayudar a solucionar lo siguiente.

Intento abrir una ventana con datos dinámicos utilizando ajax. Todo funciona excepto una cosita:
El id enviado a la página php siempre es el mismo... Agradezco cualquier ayuda.

Este es mi while:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
while($row = $resultado->fetch_array(MYSQLI_ASSOC)) {
    ?>
    <div class="noticia">
          <img src= <?php echo "fotos_noticia/".$row['id']."/".$row['id']."noticia.".$row['imagen'];?> alt="" class="info__img">
          <h2 class="info__titulo"><?php echo $row['titulo']; ?></h2>
          <p class="info__txt"><?php echo getSubString($row['texto'], 250); ?></p>
          <a class="btn-primary" onclick="cargar();">Ver Más</a>
          <form id="formulario">
            <input type="text" name="id" id="id" value="<?php echo $row['id']?>">
          </form>
    </div>
<?php } ?>

este es el javascript...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script>
    function cargar(){
        var url="vernoticia.php"
        var id=document.getElementById("id").value;
        $.ajax({
            type: "POST",
            url:url,
            data:{id:id},
            success: function(datos){
                $('#noticia').html(datos);
                document.getElementById("cerrar").style.visibility="visible";
            }
        });
    }
    function borrar(){
      var d = document.getElementById("noticia");
      while (d.hasChildNodes())
        d.removeChild(d.firstChild);
      document.getElementById("cerrar").style.visibility="hidden";
    }
</script>


que estoy haciendo mal????
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.028
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Enviar Dato generado por un while via ajax

Publicado por xve (6879 intervenciones) el 23/01/2018 08:01:28
Hola Carlos, los id's en las paginas web, no deberían de repetirse nunca, y tu estas repitiendo el mismo id en cada iteración del bucle while...

Prueba algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
while($row = $resultado->fetch_array(MYSQLI_ASSOC)) {
    ?>
    <div class="noticia">
          <img src= <?php echo "fotos_noticia/".$row['id']."/".$row['id']."noticia.".$row['imagen'];?> alt="" class="info__img">
          <h2 class="info__titulo"><?php echo $row['titulo']; ?></h2>
          <p class="info__txt"><?php echo getSubString($row['texto'], 250); ?></p>
          <a class="btn-primary" onclick="cargar(<?php echo $row['id']?>);">Ver Más</a>
          <form id="formulario">
            <input type="text" name="id" id="<?php echo $row['id']?>" value="<?php echo $row['id']?>">
          </form>
    </div>
<?php } ?>
 
<script>
    function cargar(idRecibido){
        var url="vernoticia.php"
        var id=document.getElementById(idRecibido).value;
        $.ajax({
            type: "POST",
            url:url,
            data:{id:id},
            success: function(datos){
                $('#noticia').html(datos);
                document.getElementById("cerrar").style.visibility="visible";
            }
        });
    }
    function borrar(){
      var d = document.getElementById("noticia");
      while (d.hasChildNodes())
        d.removeChild(d.firstChild);
      document.getElementById("cerrar").style.visibility="hidden";
    }
</script>

Fíjate que pongo el id de la base de datos en cada iteración, y ese mismo id lo envió al javascript.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Enviar Dato generado por un while via ajax

Publicado por Carlo (2 intervenciones) el 23/01/2018 12:03:50
Estaba desesperado con algo tan simple... muchas pero muchas gracias, su ayuda fue rápida y valiosa.

La solución quedó de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<div class="noticia">
	<img src= <?php echo "fotos_noticia/".$row['id']."/".$row['id']."noticia.".$row['imagen'];?> alt="" class="info__img">
	<h2 class="info__titulo"><?php echo $row['titulo']; ?></h2>
	<p class="info__txt"><?php echo getSubString($row['texto'], 250); ?></p>
	<a class="btn-primary" onclick="cargar(<?php echo $row['id']?>);">Ver Más</a>
</div>
 
<script>
    function cargar(idRecibido){
        var url="vernoticia.php"
 
        $.ajax({
            type: "POST",
            url:url,
            data:{id:idRecibido},
            success: function(datos){
                $('#noticia').html(datos);
                document.getElementById("cerrar").style.visibility="visible";
            }
        });
    }
    function borrar(){
      var d = document.getElementById("noticia");
      while (d.hasChildNodes())
      d.removeChild(d.firstChild);
      document.getElementById("cerrar").style.visibility="hidden";
    }
 </script>

No hubo necesidad de poner el formulario.

Muchas gracias en verdad ud me arregló el día.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad