在Ajax调用结束时刷新symfony2中的页面

时间:2012-06-24 19:43:28

标签: ajax symfony

如何在执行ajax调用后刷新页面。 我的Ajax调用是

 $.ajax({
         type: "POST",
         data: data,
         url:"{{ path('v2_pm_patents_trashpatents') }}",
         cache: false
});

此ajax执行的方法是

 public function trashpatentAction(Request $request){
    if ($request->isXmlHttpRequest()) {
        $patent_id = $request->get("pid");
        $em = $this->getDoctrine()->getEntityManager();
        $patent = $em->getRepository('MunichInnovationGroupPatentBundle:SvPatents')->find($patent_id);
        if (!$patent) {
            throw $this->createNotFoundException('No patent found for id '.$patent_id);
        }
        $patent->setIs_deleted(1);
        $em->flush();
    }
}

修改

投资组合控制人指数行动

public function indexAction(Request $request) {
     $switch_form = $this->createForm(new SwitchPortfolioType($portfolios));
     ////rest of action code
     return $this->render('MunichInnovationGroupPatentBundle:Portfolio:index.html.twig', array('new_patentgroup_form' => $new_patentgroup_form->createView(),'switch_form' => $switch_form->createView(), 'new_form' => $new_form->createView(), "portfolios" => $portfolios ,"selected_portfolio" => $selected_portfolio,"portfolio_groups" => $portfolio_groups,"patents" => $patents));

}

Index.html.twig

 <form name="portfolios" action="{{ path('v2_pm_portfolio') }}" method="post" >
            {{ form_widget(switch_form) }}
            <input type="submit"class="portfolio_input button2 tooltip" value="Switch">
 </form> 

SwitchPortfolioType

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

class SwitchPortfolioType extends AbstractType
{
public function __construct($portfolios)
{
    $this->portfolios = $portfolios;
}


public function buildForm(FormBuilder $builder, array $options)
{
    $builder
    ->add('', 'choice', array(
        'choices'   => array(
                'test' => 'Test'
        ),
            'empty_value' => 'Switch your Portfolio',
    ));
}

public function getName()
{
    return 'switch_portfolio';
}

}

在此操作结束时,我想刷新页面

我该怎么做?

2 个答案:

答案 0 :(得分:2)

刷新必须在javascript中完成。我不知道你为什么不通过ajax POST来重新加载页面,为什么不只是正常POST?

无论如何,要做你要求的我会在控制器中返回一些简单的JSON响应以表示成功,然后在ajax回调中执行此操作:

$.ajax({
     type: "POST",
     data: data,
     url:"{{ path('v2_pm_patents_trashpatents') }}",
     cache: false,
     success: function(data) {
         // optionally check if the response is what you wanted
         //if (data.response == 'deleted') {
             document.location.reload(true);
         //}
     }
});

答案 1 :(得分:0)

使用jQUery:

$('your_form').disable=true;

纯JS:

your_form.disabled = true;