Foros del Web » Programando para Internet » Javascript »

ajax no envia datos con el metodo GET

Estas en el tema de ajax no envia datos con el metodo GET en el foro de Javascript en Foros del Web. Hola chicos, si alguien me puede ayudar con mi problema, no se porque no me envia datos por medio del metodo get: tengo el seguiente ...
  #1 (permalink)  
Antiguo 05/04/2013, 09:00
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 11 meses
Puntos: 2
ajax no envia datos con el metodo GET

Hola chicos, si alguien me puede ayudar con mi problema, no se porque no me envia datos por medio del metodo get:
tengo el seguiente select que recibe la informacion:

Código HTML:
Ver original
  1. <label for="lblproducto">Seleccione tipo producto: </label>
  2. <select  class="productos" id="productox" name="productox" >
  3.             <option value="I1-x">I1-x</option>         
  4.             <option value="I5-y">I5-y</option>
  5.             <option value="I6-z">I6-z</option>
  6.         </select>
  7. <input  name="cantidad" type="text" id="cantidad" placeholder="Ingrese la cantidad" />  <br>

y los envio por medio de un metodo ajax
Código Javascript:
Ver original
  1. function agregar(){
  2.  //select
  3.  divcarrito = document.getElementById('divcarrito');
  4.  cadena = document.getElementById('productox');
  5.  cadenaProducto1=document.frmconsulta.productox.value;
  6.  cantidad=document.frmconsulta.cantidad.value;
  7.  producto = cadenaProducto1.split("-");
  8.  item1 = producto[0];
  9.  nombreItem1 = producto[1];
  10.  ajax=Ajax();
  11.  url="carrito.php?item1="+item1+"&nombreItem1="+nombreItem1+"&cantidad="+cantidad;
  12.   alert(url);
  13.  if(ajax.open("GET", url, true)) alert("Si entro"); else alert("No entro");
  14.  ajax.onreadystatechange=function() {
  15.   if (ajax.readyState==4 && ajax.status !== 404 ) {
  16.    
  17.    divcarrito.innerHTML = ajax.responseText;  
  18.    alert (ajax.responseText);
  19.   }
  20.  }
  21.  ajax.send(null);
  22. }


y tengo la funcion de agregar en php

Código PHP:
Ver original
  1. Productos agregados:
  2. <?php
  3.  
  4.  
  5. class Carrito{
  6. function carrito(){
  7. }
  8.  
  9. function agregar($item1,$nombreItem1,$cantidad){
  10.     echo 'Nombre Producto '.$nombreItem1;
  11.     echo 'Cantidad '.$cantidad;
  12.     echo 'agregado al carrito :) ';
  13. }
  14.    
  15. }
  16. /*$item1=$_GET['item1'];
  17. $nombreItem1=$_GET['nombreItem1'];
  18. $cantidad=$_GET['cantidad'];  
  19. */
  20.  
  21. if(isset($_GET["item1"])&&isset($_GET["nombreItem1"])&&isset($_GET["cantidad"])){
  22. $p=new Carrito;
  23. $item1=$_GET["item1"];
  24. $nombreItem1=$_GET["nombreItem1"];
  25. $cantidad=$_GET["cantidad"];
  26. $p->agregar($item1,$nombreItem1,$cantidad);
  27. }
  28. ?>
el problema es que en chrome y en FF alert (ajax.readyState) bota 0, y en IE bota 200 y todos los exploradores me botan alert("No entro"); y por ende no me muestra el contenido en el <divcarrito>, gracias a quien me pueda ayudar

Última edición por summerblack; 05/04/2013 a las 09:46
  #2 (permalink)  
Antiguo 05/04/2013, 09:46
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 13 años
Puntos: 2
Respuesta: ajax no envia datos con el metodo GET

es un poco lioso como llamas a ajax ¿por que no haces?:

Código:
cantidad=document.frmconsulta.cantidad.value;
 item1 = producto[0];
 nombreItem1 = producto[1];
divcarrito=$("#divcarrito").val();

var parametros={
			"item1" : item1,
			"cantidad" : cantidad,
                        "nombreItem1" :nombreItem1
		}
	
	$.ajax({
			url : 'carrito.php',
			type : 'get',
			data : parametros,
			success : function(response)
			{
				$('#' + divcarrito).html(response);
			},
                        error:function (response)
			{
			  alert("error");
			}
error
		});
no entiendo porqué compones la URL, si creas un array de parámetros con decirle que quieres el método get ya te los envía como tal y otra cosa ¿dónde llamas a la función agregar() de Javascript ?
  #3 (permalink)  
Antiguo 05/04/2013, 09:52
jall.vigo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ajax no envia datos con el metodo GET

1.- se supone que el nombre del archivo php es carrito.php
2.- la primera línea del archivo php sobra, tal como está nunca se va a ejecutar correctamente.

espero que te haya servido
  #4 (permalink)  
Antiguo 05/04/2013, 09:55
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 13 años
Puntos: 2
Respuesta: ajax no envia datos con el metodo GET

de todas formas esta mal:

divcarrito = document.getElementById('divcarrito')

le falta el .value-->divcarrito = document.getElementById('divcarrito').value asi nunca te va a coger el valor sino un objeto
  #5 (permalink)  
Antiguo 05/04/2013, 10:14
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: ajax no envia datos con el metodo GET

Ya lo solucione lo que hice fue cambiar
Código HTML:
Ver original
  1. <input  type="submit" name="input" class="boton" value="agregar" onClick="agregar()"/> <br/>

por
Código HTML:
Ver original
  1. <a   href="javascript:agregar()"><img src="img/imagenpedido.jpg"></img></a>

aunque no entiendo porque el submit hace que la pagina se me refresque :(
  #6 (permalink)  
Antiguo 05/04/2013, 12:14
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: ajax no envia datos con el metodo GET

Bueno chicos muchas gracias , aun sigo aprendiendo voy a ver como me va plicando los aportes
  #7 (permalink)  
Antiguo 05/04/2013, 12:22
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: ajax no envia datos con el metodo GET

Aclaraciones:

Para comprobar si la petición fue exitosa, se evalúan ajax.readyState==4 && ajax.status == 200, 404 es un error, pero no el único, en cambio el éxito siempre se da si se cumplen ambas condiciones

Recomiendo usar POST para añadir / eliminar del carrito, recuerden que GET cachea la respuesta, y si el usuario quiere volver a agregar otro producto al carro, al estar chacheada la última petición no se enviará, generando defases en el carrito, además es válido porque a fin de cuentas es una operación de modificación sobre el carrito.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #8 (permalink)  
Antiguo 08/04/2013, 06:21
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 13 años
Puntos: 2
Respuesta: ajax no envia datos con el metodo GET

La verdad que no entiendo muy bien lo que quieres hacer... no entiendo por qué haces submit si lo que quieres es agregarlo a través de ajax :S

Siempre que hagas submit de un formulario te va a mandar al .php que tengas en el 'action' a no se que hagas un target a un iframe oculto por ej.

y tampoco entiendo esto:

Código HTML:
<input  type="submit" name="input" class="boton" value="agregar" onClick="agregar()"/> 
si lo que quieres es llamar a la funcion javascript 'agregar' deberias ponerlo tipo 'button' no submit, si le pones submit obvio te envía el formulario...
  #9 (permalink)  
Antiguo 08/04/2013, 09:52
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: ajax no envia datos con el metodo GET

Cita:
Iniciado por eamanesims Ver Mensaje
La verdad que no entiendo muy bien lo que quieres hacer... no entiendo por qué haces submit si lo que quieres es agregarlo a través de ajax :S

Siempre que hagas submit de un formulario te va a mandar al .php que tengas en el 'action' a no se que hagas un target a un iframe oculto por ej.

y tampoco entiendo esto:

Código HTML:
<input  type="submit" name="input" class="boton" value="agregar" onClick="agregar()"/> 
si lo que quieres es llamar a la funcion javascript 'agregar' deberias ponerlo tipo 'button' no submit, si le pones submit obvio te envía el formulario...
cierto, pero también sirve devolver false en el evento onsubmit del form
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #10 (permalink)  
Antiguo 08/04/2013, 13:50
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: ajax no envia datos con el metodo GET

aah claro ya entiendo porque con submit me enviaba todo lo del formulario, la vdd no lo tenia claro, muchas gracias!!
  #11 (permalink)  
Antiguo 08/04/2013, 16:33
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: ajax no envia datos con el metodo GET

Cita:
Iniciado por summerblack Ver Mensaje
aah claro ya entiendo porque con submit me enviaba todo lo del formulario, la vdd no lo tenia claro, muchas gracias!!
Asi aún debes usar el submit, esa es la forma correcta, ya que si el usuario deshabilita javascript el form sigue siendo funcional.
Aqui te dejo una forma de como hacerlo

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>Loguin</title>
  5.  
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. //var Datos;
  9. function valida(){
  10. var us =document.getElementById('usuario');
  11. var cl = document.getElementById('clave');
  12. if((limpiar(us.value).length === 0)||(limpiar(cl.value).length === 0)){
  13. alert('complete ambos campos');
  14. return false; // hasta aqui si no completó los campos no pasa nada ya que devuelve false al evento onsubmit que llama la función con return
  15. }else{
  16. // ejecutamos ajax
  17. var xmlHttp=null;
  18. if (window.ActiveXObject){
  19. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  20. }else{
  21. if (window.XMLHttpRequest){
  22. xmlHttp = new XMLHttpRequest();
  23. }
  24. } // creaste el objeto
  25.  
  26. xmlHttp.onreadystatechange=function(){ // ejecutás el código
  27.  if (xmlHttp.readyState==4 && xmlHttp.status==200){
  28.  
  29. if(xmlHttp.responseText != 'ok'){
  30. alert('nombre o clave incorrectos');
  31. }else{
  32. document.getElementById('loguin').style.display = "none";
  33. document.getElementById('mensaje').innerHTML = "Estás logueado como " + us.value;
  34.  }
  35. }
  36.  }
  37. xmlHttp.open("POST",'entrar.php',true);
  38. xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  39. xmlHttp.send("usuario="+us.value+"&clave="+cl.value);
  40. return false; // siempre devuelve flase para prevenir el submit
  41.  
  42. }
  43. }
  44. // función adicional para prevenir que te pasen caracteres en blanco
  45. function limpiar(valor){
  46. var valor_campo = valor.replace(/^\s+/g,'').replace(/\s+$/g,'');
  47. return valor_campo;
  48. }
  49. //]]>
  50. </head>
  51. <p>Combinación válida = usuario:emprear, clave:fdw </p>
  52. <form action="entrar.php" onsubmit="return valida();" id="loguin" method="post">
  53. usuario: <input type="text" name="usuario" id="usuario" /><br />
  54. passwd: <input type="password" name="clave" id="clave" /><br />
  55. <input type="submit" value="ingresar" />
  56. </form>
  57. <p id="mensaje">
  58.     <!-- mensaje loguin -->
  59. </p>
  60. </body>
  61. </html>

un php sencillo para probarlo

entrar.php

Código:
<?php
$u = $_POST['usuario'];
$p = $_POST['clave'];
 
if(($u == "emprear") && ($p == "fdw")){
echo "ok";
exit;
}else{
echo "usuario y/o clave no validas";
}
 
?>
Demo(ejecutar con y sin javascript activado)
http://foros.emprear.com/ajax/loguin/loguin.html

Es un poco lo que te señala @maycolAlvarez

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #12 (permalink)  
Antiguo 09/04/2013, 07:35
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: ajax no envia datos con el metodo GET

muchas gracias, precisamente tambien necesitaba un login, asi que voy a probar este muchas gracias de nuevo
  #13 (permalink)  
Antiguo 10/04/2013, 01:23
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 13 años
Puntos: 2
Respuesta: ajax no envia datos con el metodo GET

Cita:
Iniciado por maycolalvarez Ver Mensaje
cierto, pero también sirve devolver false en el evento onsubmit del form
Si cierto, así también se puede ^^

Etiquetas: ajax, envia, funcion, html, input, metodo, php, select
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 09:29.