Ajax方法突然开始返回302

时间:2013-02-05 12:46:27

标签: javascript ruby ajax sinatra

我有一个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标题尚未更改且错误仍然存​​在。

1 个答案:

答案 0 :(得分:1)

302不是错误代码。这是您通过添加Location标头进行重定向的HTTP状态代码。添加Location标头会自动将状态代码更改为302. 302的唯一预期响应类型是不理解302的浏览器将看到的内容。例如,一个HTML页面,说明它是一个带有指向新页面的链接的重定向。对于AJAX,预计302没有响应,浏览器将获取您重定向到的新位置的结果。

有关HTTP状态代码的详细信息,请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3