我在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!
解决了!
感谢您的帮助! 的问候,
答案 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)。