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 回答