php Symfony 4 AJAX 问题

sd2nnvve  于 2022-11-16  发布在  PHP
关注(0)|答案(1)|浏览(171)

我正在学习Symfony,现在正在尝试连接 AJAX 和Symfony。我把Ajax放在twig中的javascript块之间,并把非常简单的函数放在控制器文件中,以检查它是否工作,但发现它不工作。在Ajax中不显示警报,在控制台中也不显示转储($r)。
这是我 AJAX 脚本,位于twig文件“”中

{%block javascripts %}
 <script language = "javascript">
   
$(document).ready(function () {
    $("#customize").on("click", function (event) {
        $.ajax({
            url: "{{ 'test/ajax' }}",
            type: 'POST',
            async: true,
            dataType: 'json',
            data:{
                id:1,
                text: 'hello'
            }
        }).done(function(data) {
            alert('yes');
        }).fail(function() {
            alert('no');
        })
    });
});
 </script> 
{%endblock%}

'''
这是连接到 AJAX 的Anker。“”

{{form_start(form)}}
    {{form_widget(form)}}
{{form_end(form)}}        
<a href="#" id="customize" name="customize" class="btn-basic">Customize</a>

“'
这是控制器文件“”

/**
* @Route("/test/ajax", name="ajax_edit")
*/
public function ajaxAction(Request $request){
  $r = $request->request->get('data');
  dump($r);
}

'''
我猜Anker没有回应,即使我点击它。但我不知道如何解决这个问题。

mzsu5hc0

mzsu5hc01#

为了确保您的TWIG模板中有正确的URL,您应该使用path()方法来生成使用路由名称的URL:

$(document).ready(function () {
    $("#customize").on("click", function (event) {
        $.ajax({
            url: "{{ path('ajax_edit') }}",
            type: 'POST',
            async: true,
            dataType: 'json',
            data: {
                id:1,
                text: 'hello'
            }
        }).done(function(data) {
            alert('yes');
        }).fail(function() {
            alert('no');
        })
    });
});

正如Bossman所说,您的路由必须返回一个JsonResponse:

/**
 * @Route("/test/ajax", name="ajax_edit")
 */
public function ajaxAction(Request $request)
{
  $r = $request->request->get('data');
  
  return $this->json($r);
}

当然,如果你想检查响应内容,你应该打开你的浏览器控制台,在网络选项卡,并检查请求响应。打开控制台在正确的选项卡,然后点击按钮#自定义。

相关问题