Symfony2在ajax动作中重定向

时间:2014-03-29 18:29:39

标签: ajax symfony redirect

我正在使用Symfony2,在我的register.html.twig中,我有:

var registerdata= {
                    "email": email,
                    "pwd": pwd,
                    "phoneNum": phoneNum
                    };
             $.ajax({
                    type: 'POST',
                    url: "register",
                    data: registerdata,
                    success: function(msg){

                        alert("OK! ");
                    },
                    error: function(XmlHttpRequest,textStatus, errorThrown){

                        alert("Failed! ");
                    }
                });

在我的控制器中,将这些数据插入数据库后,我想重定向到登录页面,我有这样的代码:

try
    {
        $this -> insertData($account);
        return $this ->redirect($this ->generateUrl('login'));
    }
    catch (Exception $e)
    {
        return new response('Message: '. $e->getMessage());
    }
但是,它不起作用。我该如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

您需要在jQuery代码中再迈一步。当服务器返回重定向响应时,您应该使用javascript:

重定向客户端
var registerdata= {
    "email": email,
    "pwd": pwd,
    "phoneNum": phoneNum
    };
$.ajax({
    type: 'POST',
    url: "register",
    data: registerdata,
    success: function(msg){

        alert("OK! ");
    },
    error: function(XmlHttpRequest,textStatus, errorThrown){

        alert("Failed! ");
    },
    complete: function(xhr)
    {
        if (xhr.status == 302) {
            location.href = xhr.getResponseHeader("Location");
        }
    }
});

当然这远非理想。