Как отправить форму ajax в symfony2?

Я собираюсь отправить свою форму. Используя Ajax, я успешно передаю свою форму, используя POST, но не знаю, как использовать Ajax с Symfony

builform

$builder->add('name', 'text', array('constraints' => array(new NotBlank()), 'attr' => array('placeholder' => 'Name'))) ->add('gender', 'choice', array('empty_value' => 'Select Gender', 'constraints' => array(new NotBlank()), 'choices' => \AppBundle\Entity\Records::$gender_list, "required" => true)) ->add('dateOfBirth', 'birthday', array('label' => 'Date Of Birth','required'=>true)) ->add('image_path', 'file', array('label' => ' ','required'=>false, 'data_class' => null, 'constraints'=>array(new Assert\File( array('mimeTypes'=>$mime_types, 'maxSize'=>'2048k' ))))) ->add('country_of_birth', 'entity', array('empty_value' => 'Country of Birth', 'class' => 'AppBundle\Entity\Location', 'property' => 'country', 'label' => 'Country of Birth' )) ->add('religion', 'entity', array('empty_value' => 'Select Religion', 'class' => 'AppBundle\Entity\Religion', 'property' => 'name', 'label' => 'Religion' )); 

действие

  $success = false; $record_rep = new \AppBundle\Entity\Records(); $form = $this->createForm(new \AppBundle\Form\AddPersonType(), $record_rep); if ($this->getRequest()->getMethod() == 'POST') { $form->submit($request); if ($form->isValid()) { $data = $form->getData(); $file = $data->getImagePath(); $image = $file->getClientOriginalName(); $new_image_name = $this->hanldeUpload($image, $file); $this->savetoDB($data, $record_rep, $new_image_name); $success = true; } } return $this->render('AppBundle:Homepage:add_person_form.html.twig', array('form' => $form->createView(), 'success'=>$success )); } 

С помощью jQuery используйте serialize() форму и отправьте ее на свой маршрут.

 $('#form').submit(function(e) { e.preventDefault(); var url = "{{ path('YOUR_PATH') }}"; var formSerialize = $(this).serialize(); $.post(url, formSerialize, function(response) { //your callback here alert(response); }, 'JSON'); }); 

В вашем действии

 if ($form->isValid()) { .... return new Response(json_encode(array('status'=>'success'))); } 

это должно быть так. но вы можете добавить некоторые параметры, такие как формат, методы и т. д. в свою маршрутизацию.

для Ajax

  $("#person").submit(function(e){ var formURL = "{{ path('form') }}"; var formData = new FormData(this); $.ajax({ url: formURL, type: 'POST', data: formData, mimeType:"multipart/form-data", contentType: false, cache: false, processData:false, success: function(data, textStatus, jqXHR) { }, error: function(jqXHR, textStatus, errorThrown) { } }); e.preventDefault(); //Prevent Default action. e.unbind(); }); $("#person").submit(); 

и для действий

  if ($request->isXmlHttpRequest()) { .... return new Response(json_encode(array('status'=>'success')); }