2014-03-29 52 views
0

我使用Symfony2中,在我的register.html.twig,我有:Symfony2的重定向在Ajax動作

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()); 
    } 

但它不起作用。我應該如何處理這個問題?

+0

服務器重定向不應該在Ajax調用中完成。在jQuery中做重定向。 –

回答

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"); 
     } 
    } 
}); 

當然,這是很不理想。