Zoha Ali Khan
Zoha Ali Khan

Reputation: 1699

Refresh page in symfony2 at the end of Ajax call

How can I refresh a page after an ajax call is executed. My Ajax call is

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

The method that is executed by this ajax is

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

Edit

Portfolio Controller Index Action

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';
}

}

At the end of this action I want to refresh the page

How can I do this?

Upvotes: 0

Views: 4798

Answers (2)

Andy.Diaz
Andy.Diaz

Reputation: 3277

Using jQUery:

$('your_form').disable=true;

Pure JS:

your_form.disabled = true;

Upvotes: 0

MDrollette
MDrollette

Reputation: 6927

The refresh will have to be done in javascript. I am not sure why you would POST via ajax only to reload the page anyway, why not just POST normally?

Anyway, to do what you ask I would return some simple JSON response in the controller to signify a success and then in the ajax callback do this:

$.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);
         //}
     }
});

Upvotes: 2

Related Questions