我正在与 symfony 合作开展一个电子商务项目。我想显示与每个产品相关的弹出窗口。该弹出窗口有一个列表选项。因此,我喜欢通过 Ajax 将该窗口的 Controller 传递为动态的,为此:
HTML 代码
{% for p in products %}
<a id="#basket-modal" href="#" data-id="{{ p.id }}" data-toggle="modal" data-target="{{ modal }}" class="btn btn-primary">
{% endfor %}
脚本
<script type="text/javascript">
$(document).ready(function(){
$("#basket-modal").on({ click: function() {
var op_prod_id = $(this).data('id');
$.ajax({
url: "{{ path('ajout_prod_panier', {'id': op_prod_id }) }}" ,
type: "POST",
data: "op_prod_id="+op_prod_id,
success: function(data, status, xhr) {
console.log(data);
},
error: function(jqxhr, status, error) {
console.log(error);
}
});
event.stopPropagation();
}
});
});
</script>
总是出现错误消息的问题:
Variable "op_prod_id" does not exist.
在网址中:
"{{ path('ajout_prod_panier', {'id': op_prod_id }) }}"
最佳答案
var op_prod_id = $(this).data('id');
是一个js变量。
{{ path('ajout_prod_panier', {'id': op_prod_id }) }}
是一个 Twig 表达式。
尝试类似的事情:
<a href="#" data-id="{{ p.id }}" data-url={{ path('ajout_prod_panier', {'id': p.id}) }}" data-toggle="modal" data-target="{{ modal }}" class="basket-modal btn btn-primary">
在你的js中
$(".basket-modal").on({ click: function() {
var op_prod_id = $(this).data('id');
var op_prod_url = $(this).data('url');
....
url: op_prod_url
关于javascript - 在ajax symfony中传递带有参数的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45811528/