从 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
参考这个例子:
我的 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);
},
});
});
我有液体 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
参考这个例子:
我的 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);
},
});
});