在Twig中的AJAX调用中找不到PHP文件

时间:2016-06-24 08:01:24

标签: ajax symfony twig

我在Symfony 2.8中练习AJAX调用的单元测试。

这是我的代码:

<script>
QUnit.test("test dynamic fill", function (assert) {
            var ajax = $("#ajax"); //my div to fill
            $("#feed_the_ajax").click(function () {
                $.ajax({
                    url: "echo.php",
                    type: "POST",
                    data: {text: "Hello world !"},
                    success: function (data) {
                        ajax.text(data);
                    },
                    error: function () {
                    }
                });
                assert.ok(!ajax.text() == "Hello world !", "Hello !");
            });
            assert.ok(!ajax.text() == "Hello world !", "Answer me ...");
        });
</script>

它位于树枝文件中。

echo.php文件就像这样:

<?php
if($_POST['text'] != ""){
    return $_POST['text'];
}

当我运行代码时,它告诉我找不到“echo.php”。

所以有两个问题:

1)首先,我是否愿意像这样(在树枝上)调用一个AJAX,还是应该使用Controller?

2)其次,我应该把PHP文件放在哪里以避免404错误?

感谢您的回答, Telest

编辑8/07/16

问候,

我回来与你分享我的解决方案。 我只是使用一个名为FOSJsRoutingBundle的包,它将生成一个到控制器中的函数的路由。 然后我“转换”我的“echo.php”到我的控制器中的路线功能,回答了一个响应和... Tadaa!

解决了!

感谢您的帮助! 的问候,

1 个答案:

答案 0 :(得分:1)

1)

你不能把JS放在Controller中。

但您可以将其保存在javascript文件中(位于app / Ressources / public / js / MyJSfile.js)

并将其包含在您的树枝模板中:

{% javascripts 'js/MyJSfile.js' %}
    <script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}

(见这里:http://symfony.com/doc/current/best_practices/web-assets.html

2)

您的echo.php应该在网络文件夹中。 (但是您的服务器配置需要允许它,基本上在安装symfony时,您将所有请求重定向到app.php或app_dev.php)。