2012-07-27 12 views
5

Mam problem z moim ajaxem jquery. Mam ten kod:Dane Jquery ajax konwertowane na ciąg

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

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

Zasadniczo chcę uchwycić "dane", które zostały zwrócone na temat "sukcesu". Ale nie mogę zrobić tego, żeby instrukcja if działała. Myślę, że "dane" nie były ciągiem, więc nie mogę dokonać porównania.

+1

Czy sprawdziłeś dane powracające, spróbuj alert (dane); najpierw –

+0

@nbrooks Ma 'async: false'. Ale comebal - prawdopodobnie nie powinieneś kodować w ten sposób. – Ariel

+0

@Ariel Wow, zupełnie tęskniłem za lolem – nbrooks

Odpowiedz

6

Definiowanie stanu poza wywołanie ajax. następnie dostęp do tego wszędzie.

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

}); 

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

At użytkowników/validatepassword użytku json_encode()

echo json_encode("Password correct"); 
+2

Dziękuję. Naprawdę rozwiązałeś mój problem. Zrobiłem kilka drobnych modyfikacji i zadziałało. >: D < – comebal

+0

@comebal: Cieszę się, że mogłem pomóc. – mrsrinivas

+1

Wskazówka: użyj 'dataType:" tekst "' lub 'dataType:" xml "' dla TXT lub dla XML. –

3

Spróbuj sprawdzić status w kodzie ajax.

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

jeśli warunek jest poza ajax, zostanie wykonany przed powrotem ajax.

+0

dzięki za informacje! – comebal

2

Można spróbować tak,

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

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

Zrobiłem to, ale nie działa również. – comebal

1

Widzisz należy przetworzyć wiadomość w funkcji sukcesu nie z zewnątrz.

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

Cześć, dziękuję za informację – comebal

1

@Comebal: Buddy to co u trzeba zrobić:

pierwsze usunąć async: false

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

Wówczas większa część, to upewnić się dane ze strony ajax jest " Popraw hasło "lub nie możesz" zrobić coś "... :) :)