fail() 处理程序也会在 HTTP200 和 HTTP202 上触发

fail() handler also fires on HTTP200 and HTTP202

我有这个简单的代码:

function dlgEditPhase_okClicked(dlgEditPhase, event) {
    $.post("/overview/phase/"+dlgEditPhase.projectId, 
        JSON.stringify({
            "phaseName": dlgEditPhase.phaseName,
            "begin": dlgEditPhase.begin,
            "end": dlgEditPhase.end
        }),
        function(data) {
            dlgEditPhase.close();
            location.reload();
        },
        "json"
    ).fail(function(data) {
        alert(data.responseJSON);
    });
}

问题是,fail 总是被触发,即使 POST 调用 returns 代码 200 或 202。

我做错了什么?

失败也可以触发,因为响应无效json