JavaScript - No me funciona la funcion ajax/codigo(mezcla de php+js)

 
Vista:
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 29/10/2019 14:32:57
Junto con saludarlos y agradecerles por su tiempo, aca va la parte del codigo que no me corre, nose si es por un error de sintaxis o que, mi idea es que la id selecta$x, vaya cambiando segun las actividades que contiene el proyecto que se va seleccionando(P.D: La consulta a mysql funciona bien), el ajax envia la consulta a actt.php, para ser procesada y asi no necesitar cambiar de pagina para realizar la consulta, de antemano, muchas gracias !!
(horas2.php, num es un valor que se manda de la pagina anterior, es un numero entero)
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
36
37
38
39
40
41
42
for($x='1'; $x<=$num; $x++){
?>
<tr>
 <td>
  <?php
echo"<select id='proyecto$x' name='proyecto$x'  >";
$resultados = mysqli_query($conexion,"SELECT * FROM proyecto");
  while($row = mysqli_fetch_array($resultados)){
  $nombre= $row['Numero_proyecto'];
  $id= $row['id_proyecto'];
  echo"<option value=$id>$nombre</option>";
    }
 ?>
  </select>
</td>
 <td>
  <?php
  echo"<div id='selecta$x'> </div>";
  ?>
 </td>
<script type ="text/javascript">
  var x = <?php echo"$x";?>;
$(document).ready(function(){
  recargarLista(x);
  $('#proyecto'+x).change(function(){
  recargarLista(x);
  });
})
</script>
<script type ="text/javascript">
  function recargarLista(x){
    $.ajax({
type:'POST',
url:'actt.php',
data:{'proyecto'+x= +$('#proyecto'+x).val()},
success:function(r){
  $('#selecta'+x).html(r);
}
      })
}
</script>
?>
Aca esta actt.php, por si quieren hecharle un ojo tambien:

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
36
37
38
39
40
41
42
43
44
45
46
47
<html>
<body>
<?php
include("conexion.php");
 
 
    if(isset($_POST['proyecto1']))   {
   $proyecto=$_POST['proyecto1'];
?>
   <select id="act" name="act" >
        <?php
$resultados = mysqli_query($conexion,"SELECT * FROM actividades WHERE proyecto_id=$proyecto");
  while($row = mysqli_fetch_array($resultados)){
  $nombre= $row['nombre_actividad'];
  $id= $row['id_actividad'];
  ?>
  <option value="<?php echo $id; ?>"> <?php echo $nombre;?></option>
 
  <?php
    }
     ?>
</select>
 <?php
    }
 
   if(isset($_POST['proyecto2'])) {
   $proyecto2=$_POST['proyecto2'];
   ?>
   <select id="act2" name="act2" >
        <?php
$resultados2 = mysqli_query($conexion,"SELECT * FROM actividades WHERE proyecto_id=$proyecto2");
  while($row = mysqli_fetch_array($resultados2)){
  $nombre2= $row['nombre_actividad'];
  $id2= $row['id_actividad'];
  ?>
  <option value="<?php echo $id2; ?>"> <?php echo $nombre2;?></option>
 
   <?php
    }
    ?>
    </select>
     <?php
    }
 
      ?>
</body>
</html>
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 joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por joel (895 intervenciones) el 29/10/2019 15:39:40
Hola Sebastian, en el archivo actt.php, no tienes que devolver el nuevamente los tags <html>, <head>, ... tienes que devolver únicamente el contenido.

El problema creo que esta en esta linea:
1
$('#selecta'+x).html(r);
Cuando se ejecuta el success de jquery, creo que no sabe que valor tiene la variable x.

Puedes revisar la consulta del navegador haber que error te da?
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 29/10/2019 15:46:01
Hola, muchas gracias por la acotación, el ordenador no me arroja error, sin embargo, no me arroja el select(el que deberia tener debido al div id='selecta$x', según el proyecto que se fuera seleccionando en el select anterior, simplemente se ve un campo vacio en ese "td", muchas gracias por tu interes!
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 29/10/2019 15:50:13
Gracias, pero aun dejando el codigo de esta manera(el campo sugerido) sigue sin aparecer el select en el td que deberia
1
2
3
4
5
6
7
8
9
10
11
12
<script type ="text/javascript">
  function recargarLista(x){
    $.ajax({
type:'POST',
url:'actt.php',
data:{'proyecto'+x : $('#proyecto'+x).val()},
success:function(r){
  $('#selecta'+x).html(r);
}
      })
}
</script>
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
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por joel (895 intervenciones) el 29/10/2019 15:58:15
Ese error que te comenta Alejandro tienes que tenerlo en la consola del navegador... me extraña que no hayas visto el error.
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
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por Alejandro (532 intervenciones) el 29/10/2019 16:28:58
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Te falta estructurar

Dentro del for tienes
llamada a recargarLista(x);
listener para cada $('#proyecto'+x).change(function(){
eso no es tanto problema pero luego tienes la función function recargarLista(x){
tienes tantas funciones idénticas como tantas veces sean x

con esto agregas el lestener a todos los select que tengan "proyecto" en el id
1
$('select[id^=proyecto]').change(function(){

y la función
1
2
3
4
5
6
7
8
9
10
11
function recargarLista(){
   $.ajax({
      type:'POST',
      url:'actt.php',
      data:{ $(this).attr('id') : $(this).val() },
      success:function(r){
         x=$(this),attr(id).substr(8);
        $('#selecta'+x).html(r);
      }
  })
}
no estoy seguro si es attr o prop
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 29/10/2019 22:09:08
Adjunte foto de como se ve horass2.php, se puede observar que el select de actividades no me esta funcionando, igual gracias por tu aporte, ya que he estado tratando bastante en el tema, por ahora el codigo iria quedando asi, pero sigue sin funcionar como deberia, ya que el boton select sigue sin funcionar, igual agradezco cualquier aporte, saludos.
P.D:
en la parte
data:{ $(this).attr('id') : $(this).val() }, this sale colorido con color rosado.


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
36
37
38
39
40
41
42
for($x='1'; $x<=$num; $x++){
  ?>
<tr>
 <td>
  <?php
echo"<select id='proyecto$x' name='proyecto$x'  >";
$resultados = mysqli_query($conexion,"SELECT * FROM proyecto");
  while($row = mysqli_fetch_array($resultados)){
  $nombre= $row['Numero_proyecto'];
  $id= $row['id_proyecto'];
  echo"<option value=$id>$nombre</option>";
    }
 ?>
  </select>
</td>
 <td>
  <?php
  echo"<div id='selecta$x'> </div>";
  ?>
 </td>
<script type ="text/javascript">
  var x = <?php echo"$x";?>;
$(document).ready(function(){
  recargarLista(x);
 $('select[id^=proyecto]').change(function(){
  recargarLista(x);
  });
})
</script>
<script type ="text/javascript">
  function recargarLista(){
    $.ajax({
type:'POST',
url:'actt.php',
data:{ $(this).attr('id') : $(this).val() },
success:function(r){
   x=$(this),attr(id).substr('8');
  $('#selecta'+x).html(r);
}
      })
}
</script>
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
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por Alejandro (532 intervenciones) el 29/10/2019 22:27:45
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
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
36
37
38
39
40
<?php
$resultados = mysqli_query($conexion,"SELECT * FROM proyecto");
$options = "";
while($row = mysqli_fetch_array($resultados)){
	$nombre= $row['Numero_proyecto'];
	$id= $row['id_proyecto'];
	$options += "<option value='$id'>$nombre</option>";
}
 
for($x=1; $x<=$num; $x++){ ?>
	<tr>
		<td>
			<select id='proyecto<?php echo $x;?>' name='proyecto<?php echo $x;?>' >
				<?php echo $options; ?>
			</select>
		</td>
		<td>
			<div id="selecta<?php echo $x;?>"> </div>
		</td>
	</tr>
<?php } ?>
 
<script type ="text/javascript">
	$(document).ready(function(){
		$('select[id^=proyecto]').trigger(change);
		$('select[id^=proyecto]').change(recargarLista);
	})
 
	function recargarLista(){
		$.ajax({
			type:'POST',
			url:'actt.php',
			data:{ $(this).attr('id') : $(this).val() },
			success:function(r){
				x=$(this).attr(id).substr('8');
				$('#selecta'+x).html(r);
			}
		})
	}
</script>
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 30/10/2019 14:51:09
imagen
Hola, adjunto imagen de como se ve ahora(horass2.php), por cierto, en php no corre esta funcion =+, luego, mi codigo iria quedando asi, pero el select del div que corresponde a la id=selecta$x, el cual deberia ir en la actividad(se aprecia en la foto) seguiria sin funcionar, recordar que esta funcionaria tambien con el codigo que esta en actt.php, adjunto como esta el codigo actualmente(tomando en cuando su consejo).

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<html>
  <head>
  <meta charset="utf-8">
  <title>Ingreso de horas</title>
  </head>
  <body>
     <script
  src="https://code.jquery.com/jquery-3.4.1.js"
  integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
  crossorigin="anonymous"></script>
     <form  method="post" action="horas3.php"id="algo">
      <?php
 include("conexion.php");
$num=$_POST['num'];
 
 
if (!empty($_POST['semana']))
  {
    $fecha3=$_POST['semana'];
 $year = substr($fecha3, '0', '-4');
  $week = substr($fecha3, '-2');
# obtenemos el timestamp del primer dia del año
$timestamp=mktime('0', '0','0', '1', '1', $year);
 
# sumamos el timestamp de la suma de las semanas actuales
$timestamp+=$week*'7'*'24'*'60'*'60';
 
# restamos la posición inicial del primer dia del año
$ultimoDia=$timestamp-date("w", mktime('0', '0', '0', '1', '1', $year))*'24'*'60'*'60';
 
# le restamos los dias que hay hasta llegar al lunes
$primerDia=$ultimoDia-'86400'*(date('N',$ultimoDia)-'1');
 
# mostramos la fecha correcta
$fecha1= date("d-m-Y",$primerDia);
$fecha2= date("d-m-Y",$ultimoDia);
 
}
$fecha1=strtotime($fecha1);
$fecha2=strtotime($fecha2);
$cuenta=(($fecha2-$fecha1)/'86400')+'1';
 
   session_start();
 $_SESSION['n']=$num;
  ?>
 
 
      Ingrese las horas del los proyectos:
 
        </p>
    <table border= "1"  class="egt" id="tabla">
    <tr class="titulo">
      <th>Proyecto</th>
      <th>Actividad</th>
      <th>Comentario</th>
    <?php
for($fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+1 day ' . date('Y-m-d',$fecha1))){
  $fecha[]=date('Y-m-d',$fecha1);
   ?>
<th>
  <?php
echo date('d-M',$fecha1) . '<br />';
 ?>
</th>
  <?php
}
       ?>
             <th>Total</th>
   </tr>
<?php
$_SESSION['fecha']=$fecha;
 
//1
for($x='1'; $x<=$num; $x++){ ?>
  <tr>
    <td>
      <select id='proyecto<?php echo $x;?>' name='proyecto<?php echo $x;?>' >
 
        <?php
$resultados = mysqli_query($conexion,"SELECT * FROM proyecto");
$options = "";
         while($row = mysqli_fetch_array($resultados)){
  $nombre= $row['Numero_proyecto'];
  $id= $row['id_proyecto'];
  $options = "<option value='$id'>$nombre</option>";
       echo  $options; }
       ?>
      </select>
    </td>
    <td>
      <div id="selecta<?php echo $x;?>"> </div>
    </td>
<td>
 <input type=text name=comentario[]>
</td>
<?php
      for($v='1'; $v<=$cuenta; $v++){
echo"<td>";
echo"<input type= text name=horas[] id=horas$v.$x  />";
echo"</td>";
 }
 
echo"<td>";
echo"  <input type= text name=total  id= total$x  readonly=readonly /> ";
echo"</td>";
  echo" </tr>";
?>
<script type ="text/javascript">
    var x = <?php echo"$x";?>;
  $(document).ready(function(){
    $('select[id^=proyecto]').trigger(change);
    $('select[id^=proyecto]').change(recargarLista);
  })
 
  function recargarLista(){
    $.ajax({
      type:'POST',
      url:'actt.php',
      data:{ $(obj).attr('id') : $(this).val() },
      success:function(r){
        x=$(this).attr(id).substr('8');
        $('#selecta'+x).html(r);
      }
    })
  }
</script>
<?php
   }
   ?>
</table>
</form>
</body>
</html>
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
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por Alejandro (532 intervenciones) el 30/10/2019 15:45:58
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Reitero debes aprender primero lo básico.
Es lógico que no funcione =+ porque es += y no es una función, es un operador.

Por favor usa el botón </> para tus códigos.

El JS no funciona por error mio, primero se declara el listener y ya que existe se dispara.
1
2
$('select[id^=proyecto]').change(recargarLista);
$('select[id^=proyecto]').trigger(change);
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 30/10/2019 20:00:00
imagennn

Hola denuevo, ese mensaje rosa dentro del this del data me llama la atencion, por casualidad no seria mejor declararlo como un obj, o cambiar algo de la sintaxis, luego, tenia toda la razon, es asi += la funcion, pero al no ser numerico me tira error Warning: A non-numeric value encountered in C:\Users\seanr\Desktop\xampp\htdocs\php\horass2.php on line 77, por lo que hasta ahora el codigo(pondre la parte polemica nomas) esta quedando asi, sin embargo, se sigue viendo igual que en la imagen de arriba, el boton select que deberia aparece en la id=selecta$x(actividades), que se tiene que ir cambiando segun el proyecto que se elije.... sigue sin aparecer :(

Parte php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
r($x='1'; $x<=$num; $x++){ ?>
  <tr>
    <td>
      <select id='proyecto<?php echo $x;?>' name='proyecto<?php echo $x;?>' >
 
        <?php
$resultados = mysqli_query($conexion,"SELECT * FROM proyecto");
$options = "";
         while($row = mysqli_fetch_array($resultados)){
  $nombre= $row['Numero_proyecto'];
  $id= $row['id_proyecto'];
  $options = "<option value='$id'>$nombre</option>";
       echo  $options; }
       ?>
      </select>
    </td>
    <td>
      <div id="selecta<?php echo $x;?>"> </div>
    </td>

Parte js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script type ="text/javascript">
    var x = <?php echo"$x";?>;
  $(document).ready(function(){
      $('select[id^=proyecto]').change(recargarLista);
    $('select[id^=proyecto]').trigger(change);
  })
 
  function recargarLista(){
    $.ajax({
      type:'POST',
      url:'actt.php',
      data:{ $(this).attr('id') : $(this).val() },
      success:function(r){
        x=$(this).attr(id).substr('8');
        $('#selecta'+x).html(r);
      }
    })
  }
</script>
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
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por Alejandro (532 intervenciones) el 30/10/2019 22:13:25
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Cierto esa parte es PHP lo correcto es .= (punto igual) entre tantos lenguajes me confundo jeje
Eso rosa no se a que se deba, yo uso notepad++ pero si te causa desconfianza puedes intentarlo asi:
1
2
3
4
5
6
7
8
9
10
11
function recargarLista(){
    x=$(this).attr(id).substr('8');
    $.ajax({
      type:'POST',
      url:'actt.php',
      data:{ 'proyecto'+x : $('proyecto'+x).val() },
      success:function(r){
        $('#selecta'+x).html(r);
      }
    })
  }
comprueba que x te este dando el valor numérico.
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 04/11/2019 15:07:40
Muchas gracias por su tiempo, con este signo .= me funciono así que deje el código como usted me recomendado desde un comienzo, sin embargo, me sigue sin funcionar el código, creo que es debido a que testie el valor de x(dentro del código de js) y me arroja indefinido, por lo que todavía no me puede funcionar el código :(...
acá le mando como deje el código actualmente(la parte que no funciona)



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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<th>Total</th>
   </tr>
<?php
$_SESSION['fecha']=$fecha;
$resultados = mysqli_query($conexion,"SELECT * FROM proyecto");
$options = "";
while($row = mysqli_fetch_array($resultados)){
  $nombre= $row['Numero_proyecto'];
  $id= $row['id_proyecto'];
  $options .= "<option value='$id'>$nombre</option>";
}
for($x='1'; $x<=$num; $x++){ ?>
  <tr>
    <td>
      <select id='proyecto<?php echo $x;?>' name='proyecto<?php echo $x;?>' >
 
        <?php
       echo  $options;
       ?>
      </select>
    </td>
    <td>
      <div id="selecta<?php echo $x;?>"> </div>
    </td>
<td>
 <input type=text name=comentario[]>
</td>
<?php
      for($v='1'; $v<=$cuenta; $v++){
echo"<td>";
echo"<input type= text name=horas[] id=horas$v.$x  />";
echo"</td>";
 }
 
echo"<td>";
echo"  <input type= text name=total  id= total$x  readonly=readonly /> ";
echo"</td>";
  echo" </tr>";
 
//<script type ="text/javascript">
  //    var x=$(this).attr(id).substr('8');
    //</script>
?>
<script type ="text/javascript">
  $(document).ready(function(){
      $('select[id^=proyecto]').change(recargarLista);
    $('select[id^=proyecto]').trigger(change);
  })
 
  function recargarLista(){
    $.ajax({
       x=$(this).attr(id).substr('8');
      type:'POST',
      url:'actt.php',
      data:{ 'proyecto'+x : $('proyecto'+x).val() },
      success:function(r){
        $('#selecta'+x).html(r);
      }
    })
  }
</script>
<?php
//<script type ="text/javascript">
  //              alert(x);
   // </script>
?>
<?php
   }
   ?>
</table>
</form>
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
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por Alejandro (532 intervenciones) el 04/11/2019 21:00:08
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Sigues con los mismos errores
Linea 12, aunque no es problema pues se hace una conversión implícita, for lleva enteros $x=1 y no $x='1' .
Linea 31 no delimitas los valores de los attributos
1
echo"<input type='text' name='horas[]' id='horas".$v.$x."'  />";
El script esta dentro del for de la linea 12.
El jSon del AJAX esta mal construido, la definicion de x va fuera del $.ajax();
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 04/11/2019 21:11:57
aaa
Disculpa, si lo habia probado afuera, pero en si no se manda la informacion a actt.php y eso se demuestra ya que en la parte de actividad no se despliega un boton select :(, y bueno para ver que valor podia tener x tire un alert con el nombre de esta, pero no me arroja nada y estoy pillado ahi , gracias por la correccion de arriba, no sabia eso de los for...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script type ="text/javascript">
  $(document).ready(function(){
      $('select[id^=proyecto]').change(recargarLista);
    $('select[id^=proyecto]').trigger(change);
  })
 
  function recargarLista(){
      x=$(this).attr(id).substr('8');
    $.ajax({
      type:'POST',
      url:'actt.php',
      data:{ 'proyecto'+x : $('proyecto'+x).val() },
      success:function(r){
        $('#selecta'+x).html(r);
      }
    })
  }
</script>
 
 
 
<script type ="text/javascript">
    alert('selecta'+x);
</script>
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
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por Alejandro (532 intervenciones) el 04/11/2019 22:06:19
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
1
2
x=$(this).attr('id').substr('8');
alert(x);
Como te comento @joel, tienes que revisar la consola.
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 04/11/2019 22:25:04
Hola, el problema es que no me arroja nada con el codigo de ahora, solo se carga la pagina como en la foto anterior, seguir leyendo abajo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script type ="text/javascript">
  $(document).ready(function(){
      $('select[id^=proyecto]').change(recargarLista);
    $('select[id^=proyecto]').trigger(change);
  })
 
  function recargarLista(){
    x=$(this).attr(id).substr('8');
    alert(x);
    $.ajax({
      type:'POST',
      url:'actt.php',
      data:{ 'proyecto'+x : $('proyecto'+x).val() },
      success:function(r){
        $('#selecta'+x).html(r);
      }
    })
  }
</script>


Ahora, si dejo el codigo de esta manera, me tira indefinido dos veces(undefined) como mensaje de alerta
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
<script type ="text/javascript">
 
 
 var x=$(this).attr(id).substr('8');
</script>
<script type ="text/javascript">
  $(document).ready(function(){
      $('select[id^=proyecto]').change(recargarLista);
    $('select[id^=proyecto]').trigger(change);
  })
 
  function recargarLista(){
    $.ajax({
      type:'POST',
      url:'actt.php',
      data:{ 'proyecto'+x : $('proyecto'+x).val() },
      success:function(r){
        $('#selecta'+x).html(r);
      }
    })
  }
</script>
  <script type ="text/javascript">
      alert(x);
</script>
Asi que nose bien que hacer :(, disculpa...
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
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por Alejandro (532 intervenciones) el 05/11/2019 00:34:01
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Las respuestas que te doy son al tanteo, viendo el código que pegas y sin etiquetas code </>, no puedo probar tu código he incluso me he equivocado y aunque lo he corregido en siguientes códigos vuelves a copiar los códigos con error y aunque te hago la mención del error sigues cometiendolo.

El problema es que no revisas la consola.

Si luego de este código no logras hacerlo funcionar solo me queda decirte que te busques otro oficio. Puedes ofenderte o esforzarte para demostrar que estoy equivocado, la desición es tuya.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<th>Total</th>
   </tr>
	<?php
	$_SESSION['fecha'] = $fecha;
	$resultados = mysqli_query($conexion,"SELECT * FROM proyecto");
	$options = "";
	while($row = mysqli_fetch_array($resultados)){
		$nombre = $row['Numero_proyecto'];
		$id = $row['id_proyecto'];
		$options .= "<option value='$id'>$nombre</option>";
	}
	for($x = 1; $x <= $num; $x++){ ?>
		<tr>
			<td>
				<select id='proyecto<?php echo $x;?>' name='proyecto<?php echo $x;?>' >
					<?php echo  $options;?>
				</select>
			</td>
			<td>
				<div id="selecta<?php echo $x;?>"> </div>
			</td>
			<td>
				<input type="text" name="comentario[]" />
			</td>
			<?php
			for($v=1; $v<=$cuenta; $v++){
				echo "<td>";
				echo "<input type= text name='horas[]' id='horas".$v.$x."'  />";
				echo "</td>";
			}
			?>
			<td>
				<input type="text" name="total"  id="total<?php echo $x;?>"  readonly="readonly" />
			</td>
		</tr>
		<?php
	}
	?>
	</table>
	<script type ="text/javascript">
		$(document).ready(function(){
			$('select[id^=proyecto]').change(recargarLista);
			$('select[id^=proyecto]').trigger(change);
		})
 
		function recargarLista(){
			x = $(this).attr('id').substr('8');
			console.log('El valor de x es "'+x+'"');
			$.ajax({
				type:'POST',
				url:'actt.php',
				data:{ 'proyecto'+x : $('#proyecto'+x).val() },
				success:function(r){
					$('#selecta'+x).html(r);
				}
			});
		}
	</script>
</form>
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 05/11/2019 16:41:21
Hola, te cuento, en verdad soy ingeniero civil industrial y estoy haciendo esto para ampliar mi conocimiento y a parte ver si puedo mejorar el codigo de una idea que tengo, la cual ya la tengo funcional de forma singular(con un monton de if) pero en verdad quiero aprender mas y a la vez mejorar el codigo que tengo y por eso estoy haciendo esto, igual disculpa por molestarte tanto, pero si, no me dedico a este rubro especificamente por decir algo...
ima
Bueno, esta quedando algo mejor(eso si modifique el codigo a uno que entendia mas), sin embargo, como se puede ver en consola en la x solo se manda el valor 2, nose como hacer que se mande el 1 y el 2( los valores que tiene el for desde arriba), aca va el codigo actual
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var x = <?php echo $x;?>;
   $(document).ready(function(){
  recargarLista(x);
$('#proyecto'+x).change(function(){
  recargarLista(x);
   });
})
</script>
<script type ="text/javascript">
 
    function recargarLista(x){
         console.log('El valor de x es "'+x+'"');
      $.ajax({
        type:'POST',
        url:'actt.php',
        data:{'proyecto1': $('#proyecto'+x).val()},
        success:function(r){
          $('#selecta'+x).html(r);
        }
      });
    }
</script>

Sin embargo, cabe recalcar que tampoco se que hacer con esta linea
data:{'proyecto1': $('#proyecto'+x).val()}, ya que me tira error la x cuando lo escribo de la siguiente manera:
data:{'proyecto'+x: $('#proyecto'+x).val()}, asi que ando pillado en eso y nose si me podrian guiar con algo, lo que quiero lograr es que todas las ventanas de actividades vayan cambiando segun el proyecto que se va seleccionando(lo mismo que se puede ver en la segunda tabla de la foto) pero que tambien funcionara con la primera por asi decirlo, disculpandome por mi ingorancia en este tema(que ha sido un dolor de cabeza para mi tambien, ya que prefiero php pero el comando de ajax no funciona en ese idioma hasta donde se, me despido).
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
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por Alejandro (532 intervenciones) el 05/11/2019 23:32:00
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Te manda 2 porque es la ultima iteración.

Aquí esta probado y funcionando.
Me parece mala practica que envíes un id dinámico, que ademas era el problema al construir el jSon, si hubieras mencionado el error que da en la consola, en las primeras respuestas se hubiera resuelto.
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
<?php
$options='';
for($i = 1; $i <= 3; $i++){
	$options .= "<option value='$i'>$i</option>\r\n";
}
?>
<?php for($i = 1; $i <= 2; $i++){ ?>
	<select id="proyecto<?php echo $i;?>"><?php echo $options; ?></select>
	<select id="selecta<?php echo $i;?>"><select/>
	<br />
<?php } ?>
 
<script src="jquery.js" ></script>
<script>
	$('select[id^="proyecto"]').change(recargarLista);
	$('select[id^="proyecto"]').trigger('change');
 
	function recargarLista(){
		var x=$(this).attr('id').substring(8);
		var id='proyecto'+x;
		var datos = JSON.parse('{"'+id+'":'+$('#proyecto'+x).val()+'}');
		$.ajax({
			url:'actt.php',
			cache:false,
			type:'post',
			data:datos,
			success:function(r){
				$('#selecta'+x).html(r);
			}
		});
	}
</script>

actt.php
1
2
3
4
5
6
7
8
9
<?php
if( isset($_POST['proyecto1']) ){
	echo "<option>Uno ".$_POST['proyecto1']."</option>";
}else if( isset($_POST['proyecto2']) ){
	echo "<option>Dos ".$_POST['proyecto2']."</option>";
}else{
	echo "<option>Otro</option>";
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

No me funciona la funcion ajax/codigo(mezcla de php+js)

Publicado por sebastian (14 intervenciones) el 06/11/2019 14:18:02
Gracias, por su ayuda, procedere a cerrar el item.
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