$.getJSONのcallbackが呼ばれない

勘違いしてたのでメモ

以下のようにgetJSONのレスポンスを受けたら、status見てリダイレクトさせようと考えたんだけど、

そもそも302が返されたらcallbackが呼ばれなかった。

$(function(){
    $.getJSON('/path/to/api', function(data, textStatus, jqXHR){
        if (jqXHR.status === 302) {
                location.href = data['redirect_to'];
        }
    };
});


django風に例を書くと、サーバー側で以下のようになってるときはcallbackは呼ばれない
404の場合も当然呼ばれない

    # リダイレクト
    return HttpResponseRedirect('/path/to/redirect')

    # json返しつつ、statusはredirect
    return HttpResponse(json.dumps({key: value}),
                        mimetype='application/json',
                        status=302)


あとjsonでなく、htmlが返された場合も呼ばれない。