Jquery AJAX post后的金字塔HTTP重定向

Jquery AJAX post后的金字塔HTTP重定向,jquery,python,ajax,pyramid,http-redirect,Jquery,Python,Ajax,Pyramid,Http Redirect,在jquery发布到服务器之后,是否可以重定向到另一个页面?一旦用户登录,我想返回一个json响应或重定向到另一个页面。我知道调用了正确的视图callable,因为我可以从服务器上看到日志语句 以下是我的jquery帖子: function postToServer(url, params) { $.ajax({ type: 'POST', url: url, data: JSON.stringify(params), co

在jquery发布到服务器之后,是否可以重定向到另一个页面?一旦用户登录,我想返回一个json响应或重定向到另一个页面。我知道调用了正确的视图callable,因为我可以从服务器上看到日志语句

以下是我的jquery帖子:

function postToServer(url, params) {
    $.ajax({
        type: 'POST',
        url: url,
        data: JSON.stringify(params),
        contentType: 'application/json; charset=utf-8',
        statusCode: {
            200: function (data, textStatus, jqXHR) {
                return data;
            },
            201: function (data, textStatus, jqXHR) {
                return data;
            },
            400: function(data, textStatus, jqXHR) {
                return data;
            }
        }
    });
}
这是相当基本的,似乎工作得很好。无论何时返回json,它都会正确处理响应

以下是我的看法:

#LOGIN
class LoginView(object):
    def __init__(self, request):
        self.request = request
        self.ctx = core.context()

    @view_config(route_name="login", request_method='GET')
    def get(self):
        template = "project:templates/login/login.mak"
        context = {}
        return render_to_response(template, context, request=self.request)

    @view_config(route_name="login", request_method='POST')
    def post(self):
        url = self.request.route_url('dashboard')
        print 'url: ' + url        
        #log user in and get credentials

        json = getJsonCredentialsObject()
        return Response('json', json)

#DASHBOARD
class DashboardView(object):
    def __init__(self, request):
        self.request = request
        self.ctx = core.context()

    @view_config(route_name="dashboard", request_method='GET')
    def get(self):
        print "in dashboard"
        template = "project:templates/dashboard/dashboard.mak"
        session = self.request.session
        context = {}
        return render_to_response(template, context, request=self.request)

我希望Login类中的post方法来处理交互,但是当我尝试使用“return-HTTPFound(location=self.request.route_url('/dashboard')”在这里重定向时,什么也没有发生。我在从请求中获取request.json_body对象时也遇到了问题(它是null),但这是另一个问题。谢谢你的帮助。

我认为要实现你想要的,你不能返回金字塔重定向到ajax调用

返回带有状态和重定向url的json数据

然后在前端,您可以在成功时重定向用户


window.location=http://redirecturlhere

使用AJAX时,浏览器不会请求显示页面

重定向只是将客户端指向不同的URL以获取响应,而在使用AJAX时,浏览器只是从新位置获取AJAX响应。如果您正在加载页面,重定向意味着数据只是从另一个位置加载


换句话说,对AJAX请求的响应永远不会改变浏览器页面本身。您需要使用JavaScript代码来实现这一点。从帖子处理程序返回URL,然后使用
window.location=newurl

该问题与金字塔无关。从AJAX调用触发重定向是不可能的。在接收和处理服务器返回的数据后,它必须作为运行代码的一部分在客户端执行。有没有办法在服务器上执行此操作?我有一个javascript解决方案,可以做你建议的事情,但我真的希望避免对服务器进行任何不必要的调用。@JeffCompton只需从html中执行一个传统的表单post(不要使用ajax)?然后你可以重新开始server@CRUSADER那太令人失望了。谢谢你的回复。我想我被困在javascript中了。