2012-07-27 12 views
5

Tengo un problema con mi jquery ajax. Tengo este código:Jquery ajax data converter to string

$.ajax({ 
    url: '/users/validatepassword/'+current, 
    success: function(data){ 
     status = data; 
    }, 
    async: false 
}); 

if(status == "Password correct") 
{ 
    //do something 
} 

Básicamente, quiero capturar los "datos" que fue devuelto el "éxito". Pero no puedo hacer que la declaración if funcione. Creo que la "información" no era una cadena, así que no puedo hacer una comparación.

+1

ha comprobado la devolución de datos, intente alertar (datos); primero –

+0

@nbrooks Él tiene 'async: false'. Pero comebal - probablemente no deberías codificar de esa manera. – Ariel

+0

@Ariel Wow, se perdió por completo que lol – nbrooks

Respuesta

6

Definir estado llamada AJAX exterior. luego acceda a eso en todas partes.

var status = ''; 
$.ajax({ 
    url: '/users/validatepassword/'+current, 
    async: false, 
    dataType: "json", 
    success: function(data){ 
     status = data; 
    }, 

}); 

if(status == "Password correct") 
{ 
    //do something 
} 

En usuarios/validatepassword uso json_encode()

echo json_encode("Password correct"); 
+2

Gracias. Usted realmente resolvió mi problema. Hice algunas pequeñas modificaciones y funcionó. >: D < – comebal

+0

@comebal: Me alegra haber podido ayudar. – mrsrinivas

+1

Consejo: use 'dataType:" text "' o 'dataType:" xml "' para TXT o para XML. –

3

Pruebe la condición de comprobación de estado dentro del código ajax.

$.ajax({ 
    url: '/users/validatepassword/'+current, 
    success: function(data){ 
     status = data; 
     if(status == "Password correct") 
     { 
     //do something 
     } 
    }, 
    async: false 
}); 

si la condición está fuera ajax, ejecutará antes del retorno Ajax.

+0

gracias por la información! – comebal

2

Usted puede tratar de esta manera,

var response = $.ajax({ 
      url: '/users/validatepassword/'+current, 
      async: false 
     }).responseText; 

     if(response == "Password correct") 
     { 
      //do something 
     } 
+0

Lo hice pero no funcionaba también. – comebal

1

Usted ve que debe procesar el mensaje dentro de la función éxito no desde fuera.

var status = ''; 
$.ajax({ 
    url: '/users/validatepassword/'+current, 
    async: false, 
    success: function(data){ 
     status = data; 
     if(status == "Password correct") 
     { 
      //do something 
     } 
    } 
}); 
+0

Hola, gracias por la información – comebal

1

@Comebal Buddy esto es lo que u necesidad de hacer:

quite primero la asíncrono: falsa

$.ajax({ 
    url: '/users/validatepassword/'+current, 
    success: function(data){ 
     //alert(data); 
     if(data == "Password correct") 
     { 
        //do something 
     } 
    } 
}); 

Entonces, la parte importante es hacer que los datos seguros de la página Ajax es " Contraseña correcta "o bien no puede" hacer algo "... :)