Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript symfony 2.8-AJAX中的注释系统_Javascript_Php_Jquery_Ajax_Symfony - Fatal编程技术网

Javascript symfony 2.8-AJAX中的注释系统

Javascript symfony 2.8-AJAX中的注释系统,javascript,php,jquery,ajax,symfony,Javascript,Php,Jquery,Ajax,Symfony,我想用symfony(2.8)在AJAX中创建一个注释系统,不幸的是,目前我甚至无法通过“$isAjax=$request->isXmlHttpRequest();” 如果代码不是100%干净的,我很抱歉,我正在测试很多东西 以下是我的控制器的一个片段: public function showCommentsAction($id) { $request = $this->container->get('request'); $em = $this->getDoct

我想用symfony(2.8)在AJAX中创建一个注释系统,不幸的是,目前我甚至无法通过“$isAjax=$request->isXmlHttpRequest();”

如果代码不是100%干净的,我很抱歉,我正在测试很多东西

以下是我的控制器的一个片段:

public function showCommentsAction($id)
{
    $request = $this->container->get('request');
  $em = $this->getDoctrine()->getManager();
  $event = $em->getRepository('MainBundle:Events')->find($id);
  $comments = $em->getRepository('MainBundle:Comments')->find($id);
  $user = $this->get('security.token_storage')->getToken()->getUser();
  $comment = new Comments();
  $comment->setEvent($event);
  $comment->setDateComment(new \DateTime("now"));
  $form = $this->get('form.factory')->createBuilder('form', $comment)
      ->add('comment')
      ->getForm();
  $isAjax = $request->isXmlHttpRequest();
  var_dump($isAjax);
  if ($request->isXmlHttpRequest()) {
      $form->handleRequest($request);
      // On vérifie que les valeurs entrées sont correctes
      // (Nous verrons la validation des objets en détail dans le prochain chapitre)
      if ($form->isValid()) {

          // On l'enregistre notre objet $advert dans la base de données, par exemple
          $em = $this->getDoctrine()->getManager();
          $em->persist($comment);
          $em->flush();
          return $this->redirect($request->getUri('event'));
      }
  }


  return $this->render('MainBundle:Default:Events\event.html.twig',array("event"=> $event,'form'=>$form->createView()));
以下是我的js:

$(document).ready(function() {
// Au submit du formulaire
$('#form').submit(function () {
    // On fait l'appel Ajax
    $.ajax({
        type: "POST",
        url: "{{ path('showcomments'}}",
        //data: {commentaire: commentaire, _csrf_token: "{{ csrf_token('authenticate') }}"},
        cache: false,
        data: {event_id: event_id},
        success: function (data) {
            alert('succes');
        }
    });


    // On retourne false pour ne pas recharger la page
    return false;
});
});
我的路线:

showcomments:
path:     /showcomments/{id}
defaults: { _controller: MainBundle:Comments:showcomments }
methods: POST
我的表格:

<li class="write-new">
    <form action="{{ path('showcomments', {'id' : event_id}) }}" method="POST" {{ form_enctype(form) }} id="form">
        {{ form_widget(form) }}

        <input type="submit" />
    </form>
</li>
  • {{form_widget(form)}

  • 在ajax数据中传递
    /showcoments/{id}
    {id}
    。根据你的路线,这是一个参数。请尝试
    url:{{path('showcoments',{id':yourId}}}},
    首先用硬代码试试yourId,应该像你在表单中写的那样。所以您也可以直接从表单中使用url。别忘了在提交时避免默认。要检查ajax是否正常工作,应执行以下操作:

    return new Response($id);
    
    还有js

    success(data){console.log(data)}
    
    基本上,你不需要
    $event=$em->getRepository('MainBundle:Events')->find($id)

    如果你这样做

    showCommentsAction(Event $event)
    
    它会自动找到

    $comment->setDateComment(new \DateTime("now"));
    

    这一行可以在您实体的控制器中完成,您不需要通过“now”。

    当您说“无法通过”时,您的意思是它没有通过if条件检查吗?是的,确实,我得到了这样的信息:“src\Main\MainBundle\controller\CommentsController.php:32:boolean false”检查请求中的标题,它们是否包含
    X-request-With
    ?因为这就是isXmlHttpRequest检查的全部内容
    var_dump($request->headers->all())
    no,vardump没有“X-Requested-With”功能,可能存在重复的