我正在尝试在twig模板中使用jquery变量来通过ajax发送,但我无法访问树枝内的jquery变量:
我的代码是:
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#my_input").change(function(){
var value = jQuery("#my_input").val();
jQuery.ajax({
url: "{{ path('ParteAccidentes_ajax', {'emergencia': value}) }}",
timeout: 5000,
success: function(data) {
alert('ok');
},
error: function() {
alert('mal');
}
});
});
});
</script>
错误显示变量值不存在(在“url:...”行中)
谢谢!
答案 0 :(得分:10)
问题是Twig是在JavaScript之前启动的,并且Twig无法识别变量“id_emergencia”。你可以做一个技巧。您可以将字符串作为参数放置,然后在JavaScript代码中将字符串替换为变量的值。这样,在启动AJAX请求之前,您将始终拥有正确的URL。
你可以这样做:
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#my_input").change(function(){
var value = jQuery("#my_input").val();
var url = "{{ path('ParteAccidentes_ajax', {'emergencia': 'text'}) }}";
url = url.replace("text", value);
jQuery.ajax({
url: url,
timeout: 5000,
success: function(data) {
alert ('ok');
},
error: function() { alert ('mal');
}
});
});
});
</script>
答案 1 :(得分:2)
当然它不存在。
value
变量只是Twig的纯文本。记住:
首先呈现Twig部分,然后将其输出到浏览器,然后浏览器呈现内容并执行Javascript。
行{{ path('ParteAccidentes_ajax', {'emergencia': value}) }}
在value
事件被解析为javascript之前执行。
你也是在事件处理程序中这样做的。
twig(因为它只是一个PHP库)如何更改已执行的javascript事件的路径网址?
由于您只想根据symfony路径和javascript变量更新URL,请查看此捆绑包:https://github.com/FriendsOfSymfony/FOSJsRoutingBundle
它提供了您想要的确切功能。