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

Enviar Dato generado por un while via ajax

Publicado por xve (6801 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