Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema con AJAX

Estas en el tema de Problema con AJAX en el foro de Javascript en Foros del Web. Hola a todos, estoy haciendo un "ejercicio propio" con ajax, pero tengo un ptoblema que no logro identificar, tengo un "mini" formulario con dos input ...
  #1 (permalink)  
Antiguo 09/12/2013, 08:25
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Problema con AJAX

Hola a todos, estoy haciendo un "ejercicio propio" con ajax, pero tengo un ptoblema que no logro identificar, tengo un "mini" formulario con dos input text y un select, el problema es que no me devuelve nada, bueno aqui va el codigo
Código HTML:
Ver original
  1. <title>Pruebas AJAX y POO</title>
  2. <script type="text/javascript">
  3. function calcular() {
  4. var xmlhttp;
  5. if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
  6. xmlhttp = new XMLHttpRequest();
  7. } else { // code for IE6, IE5
  8. xmlhttp = new ActiveXObject("Microsoft.XMLHTT P");
  9. }
  10. xmlhttp.onreadystatechange = function() {
  11. if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  12. document.getElementById("myDiv" ).innerHTML = xmlhttp.responseText;
  13. }
  14. }
  15. var var1=document.getElementById('var1').value;
  16. var var2=document.getElementById('var2').value;
  17. var e = document.getElementById("operacion");
  18. var strUser = e.options[e.selectedIndex].text ;
  19. xmlhttp.open("POST", "controller.php", true);
  20. xmlhttp.send("?var1="+var1+"&var2="+var2+"&operator="+strUser");
  21. }
  22. </head>
  23. <input type="text" id="var1" />
  24. <select name"operacion" id=" operacion">
  25. <option value"sumar">sumar</option>
  26. <input type="text" id="var2" />
  27. <br>
  28. <input type="submit" value="Calcular" onclick="calcular()" />
  29. </form>
  30. <br>
  31. <div id="myDiv"></div>
  32. </body>
  33. </html>
El archivo controller.php funciona bien, lo he ptobado solo con suma
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #2 (permalink)  
Antiguo 09/12/2013, 09:50
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Problema con AJAX

Cuidado al concatenar:

Código:
xmlhttp.send("?var1="+var1+"&var2="+var2+"&operator="+strUser);
La última comilla sobra.
  #3 (permalink)  
Antiguo 09/12/2013, 10:07
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Problema con AJAX

Cita:
Iniciado por PHPeros Ver Mensaje
Cuidado al concatenar:

Código:
xmlhttp.send("?var1="+var1+"&var2="+var2+"&operator="+strUser);
La última comilla sobra.
Eso ya lo arregle pero aun asi no me trae los datos
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #4 (permalink)  
Antiguo 09/12/2013, 10:17
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Problema con AJAX

Solo como una pregunta.
Si lo que quieres es sumar los valores, por que no los procesas con javascript directamente, y asi no tienes que estar mandando los datos a procesar?
  #5 (permalink)  
Antiguo 09/12/2013, 10:39
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Problema con AJAX

Es que mi idea es aprender a enviar datos con ajax, lo de sumar es solo para ejercitarme, ya despues le dare otros usos.
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #6 (permalink)  
Antiguo 09/12/2013, 11:05
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con AJAX

<saludos>
1. En el select hay temas a mejorar
- El name no tiene el = (pero aún así funciona)
- El id tiene espacio (al tener espacio, en la función calcular la variable e no tiene valor)
- El value del option no tiene el = (pero aún así funciona)
2. En la función calcular, en el primer else, hay espacio entre las TT y la P
3. Al hacer el innerHTML hay espacio en el "myDiv" y el paréntesis final (pero aún así funciona)
4. Usando GET en vez de POST, y enviando el send sin parámetros
Código Javascript:
Ver original
  1. xmlhttp.open("GET","controller.php?var1="+var1+"&var2="+var2,true);
  2. xmlhttp.send();
5. Si se quiere por post, usar esto
Código Javascript:
Ver original
  1. xmlhttp.open("POST", "controller.php", true);    
  2.     //linea necesaria para que se interpreten los datos de post    
  3.     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  4.         //ojo, no va el ? pues de lo contrario var1 se "pierde"
  5.     xmlhttp.send("var1="+var1+"&var2="+var2+"&operator="+strUser);
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 09/12/2013, 11:25
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Problema con AJAX

xSkArx con los cambios que te dijo mortiprogramador tendria que redirigirte el formulario, para evitar eso tienes dos opciones.

1- Utilizando el preventDefault para que el formulario no sea enviado.
2- Quitando las etiquetas del form, puesto que no es utilizado.

La segunda opcion es la mas acertada en este caso, por que no utilizas el formulario para ser enviado, y si el cliente no tiene javascript activado, no sera redireccionado a ninguna pagina y todo se quedara como esta.

Te aconsejo que separes el objeto xmlhttp de el resto de funciones para que puedas usar la funcion si tienes mas de una peticion a paginas distintas.
Por ejemplo de esta forma:
Código Javascript:
Ver original
  1. function objetus(file){
  2.  
  3.     xmlhttp=false;
  4.     this.AjaxFailedAlert = "Su navegador no soporta las funcionalidades de este sitio y podria experimentarlo de forma diferente a la que fue pensada. Por favor habilite javascript en su navegador para verlo normalmente.\n";
  5.     this.requestFile = file;
  6.     this.encodeURIString = true;
  7.     this.execute = false;
  8.     if (window.XMLHttpRequest){
  9.         this.xmlhttp = new XMLHttpRequest();
  10.         if (this.xmlhttp.overrideMimeType){
  11.             this.xmlhttp.overrideMimeType('text/xml');
  12.         }
  13.     }else if (window.ActiveXObject){ // IE
  14.         try{
  15.             this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  16.         }catch (e){
  17.             try{
  18.                 this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  19.             }catch (e){
  20.                 this.xmlhttp = null;
  21.             }
  22.         }
  23.         if (!this.xmlhttp && typeof XMLHttpRequest!='undefined'){
  24.             this.xmlhttp = new XMLHttpRequest();
  25.             if (!this.xmlhttp){
  26.                 this.failed = true;
  27.             }
  28.         }
  29.     }
  30.     return this.xmlhttp ;
  31. }
  #8 (permalink)  
Antiguo 09/12/2013, 11:31
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con AJAX

<saludos>
Eh!! si!! yo cambié el submit por un button!
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #9 (permalink)  
Antiguo 09/12/2013, 14:17
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Problema con AJAX

Gracias por la ayuda brindad, hice los arreglos que comento mortiprogramador y quite la etiqueta form como dijo Dalam. Ahora funciona bien, solo me queda validar los datos pero eso es otro cuento, gracias a todos.
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.

Etiquetas: ajax, formulario, html, input, php
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 19:35.