提交表单ajax-symfony

提交表单ajax-symfony,ajax,forms,symfony,form-submit,Ajax,Forms,Symfony,Form Submit,我想使用ajax和symfony保存一个实体。但我总是会出错。 这是我的密码 <form id="form" class="full_form" {{form_enctype(form)}} action="{{ path('add_contact') }}" method="post" > <div class="left small_width"> <div class="section-title">Ajout d'un contact<

我想使用ajax和symfony保存一个实体。但我总是会出错。 这是我的密码

<form id="form"  class="full_form" {{form_enctype(form)}} action="{{ path('add_contact') }}" method="post" >
<div class="left small_width">

    <div class="section-title">Ajout d'un contact</div>
    <span>Les champs suivis d’une étoile sont obligatoires</span>
    {{ form_widget(form.name,{ 'attr': {'maxlength': '50','placeholder':'placeholder.nom'|trans} }) }}
    {{ form_widget(form.lastName, { 'attr': {'maxlength': '50','placeholder':'placeholder.prenom'|trans} }) }}
    {{ form_widget(form.countryId,{ 'attr': {'maxlength': '50','placeholder':'placeholder.contact.country'|trans} }) }}
    {{ form_widget(form.gsmPrimary, { 'attr': {'maxlength': '50','placeholder':'placeholder.contact.gsmPrimary'|trans} }) }}
    {{ form_widget(form.gsmSecondary, { 'attr': {'maxlength': '50','placeholder':'placeholder.contact.gsmSecondary'|trans} }) }}
    {{ form_widget(form.landlinePrimary, { 'attr': {'maxlength': '50','placeholder':'placeholder.contact.landlinePrimary'|trans} }) }}
    {{ form_widget(form.landlineSecondary, { 'attr': {'maxlength': '50','placeholder':'placeholder.contact.landlineSecondary'|trans} }) }}
    {{ form_widget(form.faxPrimary, { 'attr': {'maxlength': '50','placeholder':'placeholder.contact.faxPrimary'|trans} }) }}
    {{ form_widget(form.faxSecondary, { 'attr': {'maxlength': '50','placeholder':'placeholder.contact.faxSecondary'|trans} }) }}
    {{ form_widget(form.streetNumber) }}
最后是我的控制器。创建操作如下所示

    public function createAction(Request $request)
    {

 if (!$request->isXmlHttpRequest()) {
    return new JsonResponse(array('message' => 'You can access this only using Ajax!'), 400);
}
        $contact = new Contact();
        $form = $this->createForm(new ContactType(), $contact);


        $form->handleRequest($request);

         if ($form->isValid()) {
            $em = $this->getDoctrine()->getManager();
               $em->persist($contact);
           // $em->persist($label);
            $em->flush();
             return new JsonResponse(array('message' => 'Success!'), 200);

        }
  $response = new JsonResponse(
            array(
                'message' => 'Error',
                'form' => $this->renderView('MyBundle:Contact:new.html.twig',
                    array(
                        'entity' => $contact,
                        'form' => $form->createView(),
                        'form2' => $form2->createView()
                    ))), 400);

        return $response;
但我总是会遇到一个错误,只有使用ajax才能访问它

让任何人举个例子,向我们展示如何使用ajax发送表单。 我尝试了在网上找到的两个示例,但结果始终相同。

您可以使用以下方式提交表单:

$('input[type="submit"]').click(function () {
    $('#form').submit(function(e){
        e.preventDefault();
        $(this).ajaxSubmit(
        {
            url: "{{ path('add_contact') }}",
            type: "POST",
            success: function (result)
            {
               $('#form_body').html(result);
            }
        });
    });
});
$('input[type="submit"]').click(function () {
        $('#form').submit(function(e){
            e.preventDefault();
            $.ajax(
            {
                url: "{{ path('add_contact') }}",
                type: "POST",
                data: $('#form').serialize(),
                success: function (result)
                {
                   $('#form_body').html(result);
                }
            });
        });
    });
或者您也可以按如下方式提交您的表格:

$('input[type="submit"]').click(function () {
    $('#form').submit(function(e){
        e.preventDefault();
        $(this).ajaxSubmit(
        {
            url: "{{ path('add_contact') }}",
            type: "POST",
            success: function (result)
            {
               $('#form_body').html(result);
            }
        });
    });
});
$('input[type="submit"]').click(function () {
        $('#form').submit(function(e){
            e.preventDefault();
            $.ajax(
            {
                url: "{{ path('add_contact') }}",
                type: "POST",
                data: $('#form').serialize(),
                success: function (result)
                {
                   $('#form_body').html(result);
                }
            });
        });
    });
希望对

$body.有帮助。关于'submit','full_form',函数{ ... }

完整表单应以点作为前缀


但请尝试测试您的javascript脚本是否像viktor77向您建议的那样运行。

看起来您的javascript代码没有运行。在Firebug的one或任何类似工具等控制台上检查javascript错误。例如,我在$'body'中看到一个输入错误。在'submit'、'full_form',function{上,您忘记在full_form之前添加一个。