我正在尝试将值发送到SymfonyControllervíaAjax的路径中。我确信我发送错了,但我找不到错误
让我分享一下代码:
我写过
<script type="text/javascript">
$("#my-select").change(function(event){
var id=$("#my-select").val();
var path = "path('go_to_route/" + id+ "')";
var route="{{ "+path+" }}";
alert(path);
$.ajax({
url : route,
data : {},
type : 'POST',
dataType : '',
success : function(data) {
alert(data);
},
error : function(xhr, status) {
alert('Error');
},
complete : function(xhr, status) {
//alert('Finally');
}
});
});
</script>
在 routing.yml
中go_to_route:
path: /my-route/{id}
defaults: { _controller: myBundle:MyController:myFunction }
此操作位于 MyBundle / MyController
中public function myFunctionAction($id){
return new Response($id);
}
Ajax始终返回“错误”消息。我认为发送值时发生了错误。我试过了,但它不起作用。 我究竟做错了什么? 这是我与Symfony的第一周。我很感激你的帮助。
答案 0 :(得分:1)
而不是
var path = "path('go_to_route/" + id+ "')";
var route="{{ "+path+" }}";
使用:
var path = "{{ path('go_to_route', {'id': '__ID__'}) }}"; // Result: var path = "my_route/__ID__";
path = path.replace("__ID__", id); // Result: path equals "my_route/17" for example
答案 1 :(得分:1)
var path = "path('go_to_route/" + id+ "')";
只是一个字符串。 Twig不解析该表达式,因为它不在{{
你可以做到
var path ='{{ path("go_to_route", {'id': 'xxx'}) }}'; // /my-route/xxx
path = path.replace("xxx", id); // replace xxx with your id
你需要替换值,因为twig不知道我们的js变量id
。
并且不需要var route="{{ "+path+" }}";
一起:
<script type="text/javascript">
$("#my-select").change(function(event){
var id=$("#my-select").val();
var path ='{{ path("go_to_route", {'id': 'xxx'}) }}';
path = path.replace("xxx", id);
$.ajax({
url : path,
data : {},
type : 'POST',
dataType : '',
success : function(data) {
alert(data);
},
error : function(xhr, status) {
alert('Error');
},
complete : function(xhr, status) {
//alert('Finally');
}
});
});
</script>
<强>替代强>
更清洁的方法是使用https://github.com/FriendsOfSymfony/FOSJsRoutingBundle