从 ajax 调用控制器 - Typo3

Call Controller from ajax - Typo3

我有液体 template.I 必须加载一个 select 盒子来更换另一个 select box.I 我正在使用 ajax 调用第二个 select框。 我的 ajax 电话是这样的

$('#bank_name_input').change(function(){
            var val = $('bank_name_input').val();
            var controllerpath ='<f:uri.action action="action_name" controller="controller_name" />';
            jQuery.ajax({
                type:"POST",
                url: controllerpath,
                data:{'uid':val},
                success:function(response) {
                    console.log(response);
                },
            });
    });

它导致 404 - 页面未找到错误。

真正的答案是,Fluid 和 JavaScript 不能很好地混合。 JS花括号需要通过CDATA标签进行转义。要解决这个问题,请在不使用 ViewHelper 的情况下拼出 URL,例如“?tx_myextension_myplugin[动作]=.myAction&...”。这会使用这些参数生成包含插件的当前页面。

使用 typeNum 获得干净的响应(不是整个页面)。 https://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Page/Index.html#typenum

参考这个例子:

http://www.lukasjakob.com/typo3-ajax-request-with-pagetype/

我的 problem.The 流体无法理解 js.The 流体 uri 可以存储在像

这样的隐藏变量中
<f:form.hidden name="uri_hidden" id="uri_hidden" value="<f:uri.action controller='your_controller' action='your_action' />" /> 

可以使用 jquery 访问此值,并且可以在 ajaxcall 中将此值作为 url 传递。

$('#bank_name_input').change(function(){
            var val = $('#bank_name_input').val();
            var controllerpath = $("#uri_hidden").val();
            jQuery.ajax({
                type:"POST",
                url: controllerpath,
                data:{'uid':val},
                success:function(response) {
                    console.log(response);
                },
            });
    });