首页 > 解决方案 > 如何在 Symfony 4 中发出 Ajax 请求?

问题描述

根据本教程https://knpuniversity.com/screencast/symfony/javascript#play我正在发出 ajax 请求:

我的控制器.php

/**
* @Route("/pages/{slug}/heart", name="article_toggle_heart", methods={"POST"})
*/

public function toggleArticleHeart($slug){
  $id = "5";
  return new JsonResponse(['output'=> $id]);

}

mypage.html.twig

<div class="js-like-article-count">
          result
 </div>
 <a class="js-like-article" href="{{ path('article_toggle_heart', {slug:page.slug}) }}">Click</a>

$(document).ready(function () {

  $( ".js-like-article" ).on( "click", function(e) {

        e.preventDefault();

        var $link = $(e.currentTarget);

        $.ajax({method:POST, url: $link.attr('href')}).done(function(data){
          $('.js-like-article-count').html(data.output);
        });
      });
    });

我希望,通过点击CLICK文本result变成5

但什么都没有发生。在控制台中,我收到错误:

ReferenceError:未定义 POST

标签: jqueryajaxsymfonypost

解决方案


尝试

<div class="js-like-article-count">
          result
 </div>
 <a class="js-like-article" href="{{ path('article_toggle_heart', {slug:page.slug}) }}">Click</a>

$(document).ready(function () {

  $( ".js-like-article" ).on( "click", function(e) {

        e.preventDefault();

        var $link = $(e.currentTarget);

        $.ajax({method:"POST", url: $link.attr('href')}).done(function(data){
          $('.js-like-article-count').html(data.output);
        });
      });
    });

推荐阅读