我有一个简单的场景,我想要一个页面。请求格式是AJAX。如果该请求的控制器/操作逻辑中存在某些错误,我想重定向到错误页面。问题是重定向不是JavaScript响应类型,所以我不确定它是否会起作用。
如果没有错误,那么我希望通过适当的JavaScript响应类型更新页面。
如果请求格式是AJAX,那么实现重定向响应的最佳做法是什么?
答案 0 :(得分:3)
This blog post如果你的ajax响应是ajax,那么我认为这是正确的方法。至少,在不引人注目的javascript范例中。在本质上,ajax调用总是返回一个标准的json包,可以解析它的信息有效负载或重定向URL。
答案 1 :(得分:3)
您也可以将其放在ApplicationController
中,以便针对AJAX请求正确重定向:
class ApplicationController < ActionController::Base
# Allows redirecting for AJAX calls as well as normal calls
def redirect_to(options = {}, response_status = {})
if request.xhr?
render(:update) {|page| page.redirect_to(options)}
else
super(options, response_status)
end
end
end
答案 2 :(得分:1)
如果使用jQuery,则可以使用.ajaxError()
$(document).ajaxError(function(event, request, settings){
location.href = '/error.html';
});
或假设你做了一个ajax帖子
var jqxhr = $.post("example.php", function() {
// Do what it completed will do
})
.error(function() {
location.href = '/error.html';
})