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

如何访问 false 的状态?

我需要做这样的事情:

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

2 回答 2

1

传递dataTypeasjson你的响应是一个 json 字符串,那么data将是一个对象。然后您可以使用成员运算符status访问和error属性

$.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');
于 2013-09-12T10:39:59.560 回答
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 文档ajax

于 2013-09-12T10:46:25.070 回答