簡體   English   中英

Symfony2通過Ajax保存表單數據

[英]Symfony2 Save Form Data via Ajax

我在Symfony中有一個需要通過ajax調用提交的表單。 我編寫了代碼,但是它沒有在db中保存任何數據,但是也沒有給出/顯示任何錯誤。

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的新手,也不知道如何跟蹤/調試它?

更新:還有一件事,我注意到系統中沒有用戶登錄,他們試圖進行ajax調用。 並且它正在發送到控制器,因為找不到用戶標識,所以它沒有保存到數據庫中

您需要序列化表單數據。 然后為您的表單提供一個Id屬性:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM