Foros del Web » Programando para Internet » Jquery »

funcion $.ajax jquery

Estas en el tema de funcion $.ajax jquery en el foro de Jquery en Foros del Web. Hola amigos tengo el siguiente problema: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original else {             //Compruebo si esta disponible ...
  #1 (permalink)  
Antiguo 12/08/2010, 18:28
 
Fecha de Ingreso: enero-2009
Mensajes: 77
Antigüedad: 15 años, 10 meses
Puntos: 0
funcion $.ajax jquery

Hola amigos tengo el siguiente problema:
Código Javascript:
Ver original
  1. else {
  2.             //Compruebo si esta disponible
  3.             $.ajax({
  4.                    type: "POST",
  5.                    url:"/" ,
  6.                beforeSend:function(){
  7.                    },
  8.                    success: function (data){
  9.                    switch(data){
  10.                    case 'si':
  11.                      respuesta = true;
  12.                break;
  13.                    default:
  14.                      respuesta = false;
  15.                break;
  16.                    }
  17.                    },
  18.                });
  19.                alert(respuesta);
  20.               }
el problema es que salta primero el alert antes de que respuesta tome el valor true o false en el succes de la funcion.
ayuda por favor
  #2 (permalink)  
Antiguo 13/08/2010, 07:57
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 10 meses
Puntos: 14
Respuesta: funcion $.ajax jquery

Tienes el Alert fuera del succes

Te copio el código como debería ir:
Código Javascript:
Ver original
  1. else {
  2.  //Compruebo si esta disponible
  3.  $.ajax({
  4.  type: "POST",
  5.  url:"/" ,
  6.  beforeSend:function(){},
  7.  success: function (data){
  8.   switch(data){
  9.    case 'si':
  10.     respuesta = true;
  11.     break;
  12.    default:
  13.     respuesta = false;
  14.     break;
  15.   }
  16.   alert(respuesta);
  17. },
  18. });
  19. }

Además si tienes que comprobar si 'data' es un valor u otro. Es decir, tienes 2 estados, es mejor hacer un if en vez de un switch.
Código Javascript:
Ver original
  1. if( data == 'si' ) {
  2.  respuesta = true;
  3. } else {
  4.  respuesta = false;
  5. }
  #3 (permalink)  
Antiguo 13/08/2010, 08:27
 
Fecha de Ingreso: enero-2009
Mensajes: 77
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: funcion $.ajax jquery

Gracias amigo por responder, cambie lo del switch por el if, en cuanto al alert sigue el problema ahora no salta el alert, no me muestra nada.
Otra consulta si yo qiero que el else retorne el mismo valor que el alert como hago?
desde ya gracias
  #4 (permalink)  
Antiguo 13/08/2010, 08:34
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 10 meses
Puntos: 14
Respuesta: funcion $.ajax jquery

Código Javascript:
Ver original
  1. else {
  2.  var respuesta = false; // incializa la variable en false
  3.  //Compruebo si esta disponible
  4.  $.ajax({
  5.  type: "POST",
  6.  url:"/" ,
  7.  success: function (data){
  8.   if( data == 'si' ){
  9.    respuesta = true; // si data es igual a "si", respuesta pasa a ser true, sino sigue teniendo el valor inicializado al principio
  10.   }
  11.   alert( respuesta );
  12. } // Aquí la "," no va poruqe es el último parámetro de $ajax()
  13. });
  14. }

Prueba así, que es probable que el error sea que no haz incializado la variable respuesta y la última coma que estaba de más.
  #5 (permalink)  
Antiguo 13/08/2010, 15:34
 
Fecha de Ingreso: enero-2009
Mensajes: 77
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: funcion $.ajax jquery

sigue en lo mismo aver si te puedo explicar :
Código Javascript:
Ver original
  1. else {
  2. var respuesta = false; // incializa la variable en false
  3. //Compruebo si esta disponible
  4. $.ajax({
  5. type: "POST",
  6. url:"/" ,
  7. success: function (data){
  8. if( data == 'si' ){
  9. respuesta = true; // si data es igual a "si", respuesta pasa a ser true, sino sigue teniendo el valor inicializado al principio
  10. }
  11. alert( respuesta );
  12. }
  13. });
  14. alert('hola');// ejecuta primero este alert y despues cuando termina el succes ejecuta el otro alert osea el primero
  15. }
  #6 (permalink)  
Antiguo 13/08/2010, 16:26
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: funcion $.ajax jquery

porque estás haciendo una petición asíncrona, o sea que no espera a que termine para continuar la ejecución, si es sincrónica si va a esperar a recibir la respuesta, hace el alert del seccess y continúa

hay un parámetro async que por defecto es true, podés setear a false pero si la respuesta tarda mucho es como que se cuelga

mejor en el success hace las tareas que querés o indica un funcion pasando como parámeto la respuesta y ahi hace las tareas

depende que es lo que querés lograr, si tu duda era porque se ejecuta primero un alert que está después de la petición es por lo que te dije primero, buscá ajax síncrona asíncrona
  #7 (permalink)  
Antiguo 13/08/2010, 20:15
 
Fecha de Ingreso: enero-2009
Mensajes: 77
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: funcion $.ajax jquery

probe con sincronia eso que señalabas al final y andubo pero se traba el navegador, si tiene otra idea seria de ayuda para mi gracias:D

Etiquetas: ajax, funcion
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 17:34.