ajax呼叫成功问题

时间:2013-09-12 10:38:39

标签: jquery ajax

在这种情况下,状态将始终成功:

$.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"} 

如何访问false的状态?

我需要做这样的事情:

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

2 个答案:

答案 0 :(得分:1)

dataType作为json传递,因为您的回复是json字符串,然后data将成为对象。然后,您可以使用Member Operator

访问statuserror媒体资源
$.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');

答案 1 :(得分: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