Twig和javascript
我正在创建一个页面,根据组合框中选择的类型显示图表Twig和javascript,javascript,twig,Javascript,Twig,我正在创建一个页面,根据组合框中选择的类型显示图表 <div id="chartdiv"></div> <select name="graphe" id="identifiantDeMonSelect"> <option value="Column2D">Column2D <option value="Column3D">Column3D <option value="Pie3D">Pie3D <option val
<div id="chartdiv"></div>
<select name="graphe" id="identifiantDeMonSelect">
<option value="Column2D">Column2D
<option value="Column3D">Column3D
<option value="Pie3D">Pie3D
<option value="Pie2D">Pie2D
</select>
<input type="submit" value="Afficher" onclick="ajax()">
<script type="text/javascript">
function ajax(){
var xhr
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
if (xhr !=null) {
xhr.onreadystatechange = function() { type1(xhr); };
xhr.open("GET", "{{ path('Ajax')}}", true);
xhr.send(null);
} else {
alert("The XMLHttpRequest not supported");
}}
function type1(xhr){
var docXML= xhr.responseText;
var val_type = getSelectValue('identifiantDeMonSelect');
var type = val_type+"";
var str="{{ asset('Charts/Pie2D.swf') }}";
var chart = new FusionCharts(str, "ChartId", "600", "400", "0", "0");
chart.setXMLData(docXML);
chart.render("chartdiv");
}
function getSelectValue(selectId)
{
var selectElmt = document.getElementById(selectId);
return selectElmt.options[selectElmt.selectedIndex].value;
}
</script>
专栏2D
Column3D
Pie3D
Pie2D
函数ajax(){
var xhr
如果(window.XMLHttpRequest){
xhr=newXMLHttpRequest();
}
else if(window.ActiveXObject)
{
xhr=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
如果(xhr!=null){
xhr.onreadystatechange=function(){type1(xhr);};
open(“GET”,“{{path('Ajax')}}”,true);
xhr.send(空);
}否则{
警报(“不支持XMLHttpRequest”);
}}
函数类型1(xhr){
var docXML=xhr.responseText;
var val_type=getSelectValue('identiantdemonselect');
变量类型=变量类型+“”;
var str=“{asset('Charts/Pie2D.swf')}”;
var图表=新的FusionCharts(str,“ChartId”、“600”、“400”、“0”、“0”);
chart.setXMLData(docXML);
chart.render(“chartdiv”);
}
函数getSelectValue(selectId)
{
var selectElmt=document.getElementById(selectId);
返回selectElmt.options[selectElmt.selectedIndex].value;
}
现在,当我简单地替换var str=“{{asset('Charts/Pie2D.swf')}”时代码>与“{asset('Charts/'+type+'.swf')}}”
为了动态更改图表的类型,我获得以下符号错误:中不存在“{{asset('Charts/“+type+”.swf')}}”
(我刚刚替换为“)时,我得到了页面,当我点击提交按钮时,什么都没有发生,在控制台(chrome的控制台)内,我得到了这个错误“get”http://127.0.0.1:8888/dashboard2/Symfony/web/Charts/“+type+”.swf 404(未找到)
”。它按原样接受它+键入+”
;
显然我需要帮助,我不知道这是一个连接问题,还是与细枝和资产函数有关。提前谢谢我想这是不可能的。您不能将javascript变量与twig混合使用,因为一个是客户端,另一个是服务器 在这里,您不必使用{asset}},而可以创建一个路由来获取资产并在操作中使用资产功能。 然后,您可以使用: 或者像这样的廉价解决方案:
route = "{{ path('myassetroute', { 'pie': "PLACEHOLDER" }) }}";
route = route.replace("PLACEHOLDER", type);
非常感谢:)好吧,我想称之为“聪明的做事方式”,而不是“廉价的变通方法”。可能是