0

Sinatra アプリがあり、そこに ajax メソッドがあります。以前は 200 と結果を返しました。これで 302 が返され始め、結果はまだ正しいままです(Google Chrome デバッグ コンソールで確認できます)。

xaml コードは次のとおりです。

    :javascript
        $(document).ready(function() { 
            $(document).on("click", "#my_id", function(){
              $.ajax({
                type: "GET",
                url: "/my_url",
                success: function(data){
                  window.location = data;
                }
            });
          });
        });


   def my_url
    #getting a data.....
    #returning the data... there is nothing unusual
  end

更新:それが私がしたことです:

  def my_url
    result = get_result()
    response.headers['Location'] = request.referer
    result
  end

しかし、LocationヘッダーはResponse変更されておらず、エラーが残っています。

4

1 に答える 1

1

302 はエラー コードではありません。Locationこれは、ヘッダーを追加して行っているリダイレクトの HTTP ステータス コードです。ヘッダーを追加するとLocation、ステータス コードが自動的に 302 に変更されます。302 に対して期待される応答の唯一のタイプは、302 を理解しないブラウザーが表示するものです。たとえば、新しいページへのリンクを含むリダイレクトであることを説明する HTML ページ。AJAX の場合、302 に対する応答は期待されず、ブラウザーはリダイレクト先の新しい場所の結果を取得します。

HTTP ステータス コードの詳細については、http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3を参照してください。

于 2013-02-05T13:59:07.370 に答える