1

最後に、302エラーをキャッチしてログインページにリダイレクトしたいのですが、現在xhr.statusはステータスコード200を取得しています。

これが私の現在のコードです:

parentSyncMethod = Backbone.sync
Backbone.sync = (method, model, options) ->
  old_error = options.old_error
  options.error = (xhr, text_status, error_thrown) ->
    if(xhr.status == 302)
      window.location.replace('http://localhost:8080/login')
    else
      old_error?(xhr, text_status, error_thrown)
  parentSyncMethod(method, model, options)

基本的に問題は、現在のWebページが200エラーをスローしていることだと思いますが、302をスローしているWebページはラップされており、xhr.statusに伝播していません。行われたすべてのget、post、putなどの呼び出しからすべてのステータスコード応答を取得する方法はありますか?

4

1 に答える 1

5

302応答コードはブラウザによって自動的にリダイレクトされるため、その応答をキャッチすることはできません。ハンドラーは、リダイレクト先のURLからデータが戻ってきたときにのみ実行されます。

ここで302を使用する代わりに、おそらく200を返し、応答データに独自の方法でリダイレクトを通知させる必要があると思います。

于 2012-04-20T16:02:52.727 に答える