2015-10-15 2 views
1

У меня есть форма в Symfony, которую необходимо отправить через вызов ajax. Я worte код, но он не сохраняет данные в db, но также не дает/не показывает никаких ошибок.Symfony2 Сохранение данных формы через Ajax

send_dict = { 
    type: 'POST', 
    url: $(this).attr('action'), 
    processData: true, 
    data: $('#Form').serialize(), 
    beforeSend: function(request) {alert('before send');}, 
    success: function (data) {alert("success")}, 
    error: function(xhr, textStatus, thrownError) { 
     alert('Some Thing Went Wrong, Please Refresh and Try Again...'); 
    } 
} 
$.ajax(send_dict); 


public function createAction(Request $request) 
{ 
    $user = $this->getUser(); 
    $address = new Addresses(); 

    if($request->isXmlHttpRequest()) { 
     // Do something... 
     if ($request->isMethod('POST')) { 
      $request = $this->get('request'); 
      $permanent_is_present = $request->get('permanent_is_present'); 
      $present_address = $request->get('present_address'); 
      $present_address_country = $request->get('present_address_country'); 
      // Persisting Objects to the Database 
      if($permanent_is_present==true){ 
       $address->isIsPresent(true); 
       $address->isIsPermanent(true); 
      }else{ 
       $address->isIsPresent(true); 
      } 
      $address->setUser($user); 

      $address->setStreet1($present_address); 
      $address->setCountry($present_address_country); 
      $address->setState($present_address_state); 
      $address->setCity($present_address_city); 
      //exit(\Doctrine\Common\Util\Debug::dump($address)); 
      // Entity Manager To Get Connected with Doctrine 
      $em = $this->getDoctrine()->getManager(); 
      // Persists the entire objects.... 
      $em->persist($address); 
      // Flush queries into database 
      $em->flush(); 
      $output = array(); 
      $response = new Response(); 
      $output[] = array('success' => true); 
      $response->headers->set('Content-Type', 'application/json'); 
      $response->setContent(json_encode($output)); 
      return $response; 
     }else{ 
      return $this->render('AddressBundle:Addresses:new.html.twig'); 
     } 
    } else { 
     return $this->redirect($this->generateUrl('address_new')); 
    } 

} 

показаны как предупреждающие сообщения перед отправкой, так и успех на функции ajax. но данные не сохраняются в базе данных? Новое в symfony, также не знаете, как отслеживать/отлаживать это?

UPDATE: Еще одна вещь, я заметил, что нет Логин пользователя в системе, и эм пытается сделанных звонков AJAX. и он отправляет контроллеру и потому, что идентификатор пользователя не найден, поэтому он не сохраняется в базе данных.

+0

Возможно, проблема с оценкой с '$ (this) .attr ('action')' - что вы ожидаете от этого? – Steve

+0

создайте сторону контроллера объекта формы, затем привяжите запрос. Затем вы можете проверить правильность. [heres] (http://codemonkeys.be/2013/01/ajaxify-your-symfony2-forms-with-jquery/) разумный ресурс, который поможет вам. – DevDonkey

+0

@Steve 'action =" {{path ('address_create')}} "' –

ответ

0

Вам необходимо сериализовать данные формы. Дайте вашей форме атрибут идентификатора:

data: $('#Form').serialize(),