【问题标题】:Symfony, submit html form to controller using ajaxSymfony,使用 ajax 将 html 表单提交给控制器
【发布时间】:2019-05-17 21:34:39
【问题描述】:

我尝试使用 AJAX 将 hmtl 表单的数据发送到控制器,但控制器没有收到错误显示的数据。

html表单:

<form id="evento" name="evento" method="post" >     
      <div class="form-group">
        <label for="evento-titulo" class="col-form-label">Título:</label>
        <input type="text" class="form-control" id="evento_titulo" name="evento_titulo">
      </div>          
      <div class="form-group">
        <label for="evento_descripcion" class="col-form-label">Descripción:</label>
        <textarea class="form-control" id="evento_descripcion" name="evento_descripcion"></textarea>
      </div>          
      <div class="form-group">
        <label for="evento_inicio" class="col-form-label">Inicio:</label>
        <input type="datetime-local" class="form-control" id="evento_inicio" name="evento_inicio">
      </div>          
      <div class="form-group">
        <label for="evento_fin" class="col-form-label">Fin:</label>
        <input type="datetime-local" class="form-control" id="evento_fin" name="evento_fin">
      </div>              
      <div class="form-group">
        <label for="evento_checkmail" class="col-form-label">
             <input type="checkbox"  id="chkmail" name="chkmail" style="vertical-align:middle;">            
             Añadir correo  &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp
             Color:
             <input type="color"  id="color" name="color" style="vertical-align:middle;">

        </label>
        <input type="email" class="form-control" id="evento_mail" name="evento_mail" disabled="disabled">
      </div>

      <div class="modal-footer">
        <button type="button" class="btn btn-outline-danger" data-dismiss="modal">Cerrar</button>
        <button type="submit" class="btn btn-outline-success" id="save_event" name="save_event">Confirmar</button>
    </div>
    </form>

通过ajax将表单数据传递给控制器​​:

$("#evento").submit(function(){     
    var data = $('#evento').serialize();        
    $.ajax({ 
        type: "POST",
        data: data,
        url: {{ render( controller('CalendarBundle:Calendar:addEvent')) }},
        success: function(data) 
        {
            console.log($data);
            alert('OK');
        }  
    });         });

控制器:

public function addEventAction() {

    $em = $this->getDoctrine()->getManager();
    //fetch the POST Data

    $request = $this->get('request_stack')->getCurrentRequest();
    $data = $request->request->all();


    $evento = new Evento();


    $evento->setBeginat(new \DateTime($data["evento_inicio"]));
    $evento->setEndat(new \DateTime($data["evento_fin"]));
    $evento->setTitle($data["evento_titulo"]);
    $evento->setMail($data["evento_mail"]);
    $evento->setDescription($data["evento_descripcion"]);
    $evento->setColor($data["color"]);

    $em->persist($evento);
    $em->flush();

    //return response
    $serializedEntity = $this->container->get('serializer')->serialize($evento, 'json');
    $response = new Response($serializedEntity);
    $response->headers->set('Content-Type', 'application/json');
    return $response;

}}

这是错误信息

在渲染模板期间引发了异常 (“注意:未定义的索引:evento_inicio”)。

【问题讨论】:

    标签: php html mysql ajax symfony


    【解决方案1】:

    您的 AJAX url 属性不是很好,您应该只调用与控制器操作 addEventAction() 关联的 URL(路由)。

    假设您到 addEventAction 的路线是“/event/add”,然后输入url: "/event/add",或者即使您有此路线的名称,然后输入url: "{{ path('name_of_your_route') }}"

    AJAX 请求的 URL 属性必须是您发送请求的有效地址 :-)

    【讨论】:

      【解决方案2】:

      您的 Ajax 请求以 application/json 内容类型发送,但您的控制器期待 application/x-www-form-urlencoded

      尝试json_decode()ing $request-&gt;getContent() 获取您的$data

      【讨论】:

        【解决方案3】:

        看看这个包来管理来自 javascript 的 Symfony URL:https://github.com/FriendsOfSymfony/FOSJsRoutingBundle。 请记住,Javascript 将在 twig 之前执行。我确信您显示的错误会在页面加载时显示。祝你好运

        【讨论】:

          猜你喜欢
          • 2022-08-19
          • 1970-01-01
          • 2017-10-20
          • 1970-01-01
          • 1970-01-01
          • 2019-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多