Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problemas con envío de números (php y AJAX)

Estas en el tema de Problemas con envío de números (php y AJAX) en el foro de PHP en Foros del Web. Buenas! Hace poco que programo (unos meses) así que tiro de foros para solucionar las dudas y problemas que me surgen (algún día seré yo ...
  #1 (permalink)  
Antiguo 26/03/2013, 05:50
 
Fecha de Ingreso: marzo-2013
Ubicación: Valencia
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Problemas con envío de números (php y AJAX)

Buenas!

Hace poco que programo (unos meses) así que tiro de foros para solucionar las dudas y problemas que me surgen (algún día seré yo el que ayude...).

Hace unos días que estoy batallando con un trozo de código y no le encuentro el fallo. Tengo un input en el que introduzco un número y al darle a un botón me muestra la tabla de multiplicar de dicho número. El caso es que si aprieto el botón me muestra la tabla, pero en lugar del número me pone "undefined", pero si le doy al enter se me abre en una pestaña nueva y me muestra la tabla correctamente.

¿Alguna idea?

Gracias!!
  #2 (permalink)  
Antiguo 26/03/2013, 05:54
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 13 años, 3 meses
Puntos: 31
Respuesta: Problemas con envío de números (php y AJAX)

Sin mostrar tu codigo, imposible poder ver el problema.
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #3 (permalink)  
Antiguo 26/03/2013, 06:05
 
Fecha de Ingreso: marzo-2013
Ubicación: Valencia
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Problemas con envío de números (php y AJAX)

Perdón!!! Las prisas, los nervios...

El html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>php while</title>
<script type="text/javascript">
function enviar(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("tabla").innerHTML=xmlhttp .responseText;
}
}
var valor = document.getElementsByTagName("i").value;
xmlhttp.open("GET","./php_while.php?i="+valor,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form method="GET" action="php_while.php">
Inserta el número del que quieres que escriba la tabla de multiplicar:
<br/><input type="text" name="i"/>
<br/><button type="button" onclick="enviar()">OK</button>
<div id="tabla"></div>
</form>
</body>
</html>

El php:

<?php
error_reporting(0);
$i = $_GET['i'];
$x = 1;
echo "<table border='2px solid black';>";
while ($x <= 10){
echo '<tr><td>'.$i.'</td><td> X </td><td>'.$x.'</td><td> = </td><td>'.($i*$x).'</td>';
$x++;
}
echo "</table>";
?>
  #4 (permalink)  
Antiguo 26/03/2013, 06:13
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 13 años, 3 meses
Puntos: 31
Respuesta: Problemas con envío de números (php y AJAX)

Deberias de utilizar un submit

<input type="submit" onclick="enviar()" value="OK"/>
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #5 (permalink)  
Antiguo 26/03/2013, 06:20
 
Fecha de Ingreso: marzo-2013
Ubicación: Valencia
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Problemas con envío de números (php y AJAX)

Al principio lo tenía así, pero no funcionaba. Leí que podría ser por esa razón, por eso lo cambié.
¿Te funciona bien así?
  #6 (permalink)  
Antiguo 26/03/2013, 07:26
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 4 meses
Puntos: 181
Respuesta: Problemas con envío de números (php y AJAX)

Revisa en el dom getelementsbytagName, no se si asi se puedan obtener sus valores,revisa la documentación. Yo suelo usar getElementByID.

En el formulario no se coloca ni metodo ni accion

Valida la entrada para que no te de la tabla de multiplicar "papa*1", "mama*5", etc. Eso te lo dejo de tarea, mira los enlaces:

http://php.net/manual/es/function.isset.php
http://www.php.net/manual/es/function.is-numeric.php
http://www.php.net/manual/es/function.is-float.php


Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  3. <title>php while</title>
  4. <script type="text/javascript">
  5. function enviar(valor)
  6. {
  7.     var xmlhttp = new XMLHttpRequest();
  8.     xmlhttp.onreadystatechange=function()
  9.     {
  10.         if (xmlhttp.readyState==4 && xmlhttp.status==200)
  11.         {
  12.             document.getElementById("tabla").innerHTML=xmlhttp .responseText;
  13.         }
  14.     }
  15. xmlhttp.open("GET","php_while.php?i="+valor,true);
  16. xmlhttp.send();
  17. }
  18. </head>
  19. <form action="">
  20. Inserta el número del que quieres que escriba la tabla de multiplicar:
  21. <br/><input type="text" name="i" id="i"/>
  22. <br/><button type="button" onclick="enviar(document.getElementById('i').value)">OK</button>
  23. <div id="tabla"></div>
  24. </form>
  25. </body>
  26. </html>

Código PHP:
<?php
$i 
$_GET['i'];
$x 1;
echo 
"<table border='2px solid black';>";
while (
$x <= 10){
echo 
'<tr><td>'.$i.'</td><td> X </td><td>'.$x.'</td><td> = </td><td>'.($i*$x).'</td>';
$x++;
}
echo 
"</table>";
?>
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 26/03/2013 a las 07:42
  #7 (permalink)  
Antiguo 27/03/2013, 01:49
 
Fecha de Ingreso: marzo-2013
Ubicación: Valencia
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 3
De acuerdo Respuesta: Problemas con envío de números (php y AJAX)

Solucionado. También me funciona poniendo el script al final (para que cargue toda la página). Eso sí, con getElementsByTagName no, aunque debería...

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <head>
  3.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  4.         <title>php while</title>
  5.     </head>
  6.     <body>
  7.         <form method="GET" action="php_while.php">
  8.             Inserta el número del que quieres que escriba la tabla de multiplicar:
  9.             <br/><input type="text" name="i" id="i"/>
  10.             <br/><button type="button" onclick="enviar()">OK</button>
  11.             <div id="tabla"></div>
  12.         </form>
  13.         <script type="text/javascript">
  14.         function enviar(){
  15.             var xmlhttp = new XMLHttpRequest();
  16.             xmlhttp.onreadystatechange=function(){
  17.                 if (xmlhttp.readyState==4 && xmlhttp.status==200){
  18.                     document.getElementById("tabla").innerHTML=xmlhttp.responseText;
  19.                 }
  20.             }
  21.             var valor = document.getElementById("i").value;
  22.             xmlhttp.open("GET","./php_while.php?i="+valor,true);
  23.             xmlhttp.send();
  24.             }
  25.         </script>
  26.     </body>
  27. </html>

Etiquetas: tabla
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 22:31.