关于AJAX,symfony2 - contollerAction

时间:2014-02-06 14:09:11

标签: javascript php jquery ajax symfony

我在twig模板中的jquery脚本中调用symfony2中的controllerAction进行表单验证和验证。在成功响应之后,我使用$ .post()从jquery脚本调用另一个控制器来为用户仪表板呈现模板。但我得到的是一个显示在控制台中的模板,但不是在用户浏览器窗口中。 如何以上述方式实现此目的。 ??

感谢您的帮助(提前) AKSHAT。

<script>
// my jquery code
$(document).ready(function()
{
$('.sign_in_box').click(function()
{
var data = new Object();
data.email=$('.email_txt').val();
data.password=$('.pwd_txt').val();
$.ajax('{{ path('login_login_validation') }}', {
    type : 'POST',
    data : data,
    success : function(response){
       var json = JSON.parse(response);
       var flag = json.success;
       if(flag)
           {
           $('#pwd_login_error').css('opacity' , '0');    
           $('#email_login_error').css('opacity' , '0' );
           $.ajax('{{ path('login_login_verification') }}',{
           type : 'POST',
           data : data,
           success : function(response){
               var login = JSON.parse(response);
               if(login.login)
                   {
                       alert("login success");
                       $.post('{{ path('login_dashboard') }}', data);
                   }
                   else
                       {
                        $('#pwd_login_error').css('opacity' , '0.5' );
                       }      
   }});
           }
       else
       {
            $('#pwd_login_error').css('opacity' , '0' );
           $('#email_login_error').css('opacity' , '0.5' );
        }  
        }
});   
});
});    
</script>


//////////////////////////////////////////////////////////////////////////////////////////////////////////
// controller
<?php

namespace Login\Bundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DashboardController extends Controller
{
public function indexAction()
{
    $email = $this->get('request')->get('email');
    return $this->render('LoginBundle:Dashboard:index.html.twig', array('email'=> $email));

}

}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// routing file

login_homepage:
pattern:  /
defaults: { _controller: LoginBundle:Homepage:index }


login_login_validation:
pattern:  /ajax_validate
defaults: { _controller:  LoginBundle:Login:validation }


login_login_verification:
pattern: /ajax_verify
defaults: { _controller: LoginBundle:Login:verification }

login_dashboard:
pattern: /dashboard
defaults: { _controller: LoginBundle:Dashboard:index }


/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// twig file
{% block message %}
hello ! {{ email | json_encode | raw }}
welcome to dashboard .
{% endblock%}

1 个答案:

答案 0 :(得分:1)

唯一错误的是你正在渲染索引页面。成功登录后,您必须通过

重定向您的页面
window.location = "http://somewhereelse.com";

或者你也可以在任何div中追加数据,它取决于你想要遵循的方式。