2013-09-12 3 views
-1

В этом состоянии случае всегда будет успешным:Аякса вопрос успеха вызова

$.post($('#form_url').val(), { email: email_val },function(data, status){ 
    console.log(status, data); 
    if(status === "success"){ 
     step_1.fadeOut(function(){ 
      step_2.fadeIn(); 
     }); 
    } 
}); 

console.log данные возвращает следующее:

{"status":false,"error":"You already participate in the competition"} 

Как я могу получить доступ статуса ложных?

мне нужно сделать что-то вроде этого:

if (status === 'error'){//do sth} 
+0

Вы попробовали 'data.status'? –

+0

он возвращает undefined – Alex

+1

'data.status' ...? Кроме того, это логическое значение, а не строка, поэтому сравнение с «успехом» не будет работать. –

ответ

1

Пропустите dataType как json, как ваш ответ является строкой JSON, то data будет объектом. Тогда вы можете получить доступ к status и error свойства, используя Member Operator

$.post($('#form_url').val(), { 
    email: email_val 
}, function (data, status) { 
    if (data.status) { 
     step_1.fadeOut(function() { 
      step_2.fadeIn(); 
     }); 
    } else { 
     console.log(data.error) 
    } 
}, 'json'); 
0

использовать современный синтаксис вызова Ajax:

$.ajax({ 
     url:  $('#form_url').val() 
    , data: { email: email_val } 
    , method: "POST" 
}).always(function(data_or_jqXHR, textStatus, jqXHR_or_errorThrown) { 
    console.log(textStatus, data_or_jqXHR); 
}).done(function(data, textStatus, jqXHR) { 
    step_1.fadeOut(function(){ 
     step_2.fadeIn(); 
    }); 
}).fail(function(jqXHR, textStatus, errorThrown) { 
    // do sth on error 
}); 

для детального объяснения метода обратитесь к jquery api docs on ajax.

Смежные вопросы