将自定义错误代码传递给ajax错误函数

时间:2017-04-30 08:14:03

标签: javascript php jquery ajax

我试图将自定义错误代码传递给客户端到ajax错误函数。 在服务器端:

$response = array();

if ( empty($post['parent_id']) ) {
    $response = array('error' => true, 'status_code' => -2);
    exit();
}

$is_valid_id = RC()->is_valid_id($post['parent_id']);
$row = RC()->get_row_data($post['parent_id']);
if ( ! $is_valid_id ) {
    $response = array('error' => true, 'status_code' => -1);
} else if ( ! $row ) {
    $response = array('error' => true, 'status_code' => 0);
} else {
    $response = json_encode($row);
}

echo $response;

然后我想在我的js脚本中检查这个状态代码,但是找不到这样做的方法(仅在没有触发错误事件的情况下找到方法)。

$.ajax({
    url: ajax_url,
    data: {
        'action': 'rc_parent_sign_in',
        'form_data': $('#parent-sign-in-form').serialize(),
        'security': security_nonce
    },
    type: "post",
    dataType: "json",
    cache: false,
    success: function (response) {
        var query_vars = $.param(response);
        window.location.replace('http://localhost/renecassin/user-registration/?' + query_vars);
    },
    error: function (response) {
        $('.form-control-feedback').addClass('hide');

        /* Looking for something like this */
        switch ( response.status_code) {
            case -2 :
                parent_id_form_group.addClass('has-danger').children('#empty-field').
                removeClass('hide');
                prent_id_input.addClass('form-control-danger');
                break;
            case -1 :
                parent_id_form_group.addClass('has-danger').children('#not-valid-id-feedback').
                removeClass('hide');
                prent_id_input.addClass('form-control-danger');
                break;
            default :
                parent_id_form_group.addClass('has-danger').children('#id-not-exists-feedback').
                removeClass('hide');
                prent_id_input.addClass('form-control-danger');
        }
    }
});

任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

这是因为响应将转到您的响应回调,您正在成功返回一个对象。

只有在请求本身失败时才会调用错误回调(超时,404等等。)

您需要在成功回调中处理内部错误代码