javascript - Symfony2 通过 Ajax 保存表单数据

标签 javascript php jquery ajax symfony

我在 Symfony 中有一个表单,需要通过 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 新手,也不知道如何跟踪/调试它?

更新: 我注意到的另一件事是系统中没有用户登录,并且他们试图进行 ajax 调用。它正在发送到 Controller ,因为找不到用户 ID,所以它没有保存到数据库中

最佳答案

您需要序列化表单数据。然后为您的表单指定一个 Id 属性:

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

关于javascript - Symfony2 通过 Ajax 保存表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33147965/

相关文章:

php - 通过 AJAX 评估 PHP

javascript - 我如何在 JavaScript 中表示以下菜单结构?

javascript - 根据滚动位置设置 div 宽度

javascript - 如何在带有div父级的表中查找文本

javascript - 在 Javascript/NodeJS 中返回调整时区的当前日期,然后在早上 6 点找到相当于用户时间的 UTC

php - Yii2 显示记录标签

php - Opencart 商店管理员不工作

php - 如何将 DOMNodeList 对象转换为数组

jquery - 按钮上的透明覆盖 div 触发器在 IE 10 中不起作用

JQuery Datatables 插件 - aoData,它来自哪里以及如何