Ajax 表单提交 - 错误 3

Ajax form submission - typo3

我有一个 extbase TYPO3 扩展。它包含一个带有表单的模型 window。在提交 ajax 调用时,通过 updateAction 更新基础 table。我的问题是如何通过控制器中的 getArgument() 方法获取表单参数。我的代码如下。

我的表格是:

<form id="updatewindow" method="POST"  name="iframe">
    <p><label for="fields">' + $(title).html() + ':</label>
    <input type="text" value="' + cell_data + '" name="tx_suserform_userform[newUser][name]"></p>
</form>

Ajax 通话:

url_update = '<f:uri.action  action="updateFileds" absolute="1" noCacheHash="1"/>';
jQuery.ajax({
    url: url_update,
    type: "POST",
    data: params,
    success: function (data) {
        if (data == 'true') {
            location.reload();
        } else {
        }
    }
});

在我的控制器中我写了

$post_val = $this->request->getArgument('name');

但它returns错误

$this->request->getArguments()

只有 returns 控制器名称和操作。

您可以使用 JavaScripts FormData 对象获取表单数据:

url_update = '<f:uri.action  action="updateFileds" absolute="1" noCacheHash="1"/>';
var params = new FormData(jQuery('#updatewindow').get(0));
jQuery.ajax({
    url: url_update,
    type: "POST",
    data: params,
    success: function (data) {
        if (data == 'true') {
            location.reload();
        } else {
        }
    }
});

您可能应该使用流体渲染您的表单,否则表单中将缺少一些 extbase 依赖的东西(检查任何流体生成的表单中隐藏的 div)。

要获取 URL 到 POST 的数据,我建议使用扩展名 typoscript_rendering - 它就是为此目的而制作的。它生成一个 URL,它不会 return 整个 HTML 页面,而只会生成调用操作模板的结果。您需要启用 cHashes 才能使用它。

$this->request->getArguments() 接收格式为

的 post/get 参数
$pluggin_signature['argument'] 

所以我以 ajax.Here 的格式传递参数是我的代码

url_update = '<f:uri.action  action="updateFileds" absolute="1" noCacheHash="1"/>';
var params = {'tx_pluggin_signature[name]':'test','tx_pluggin_signature[phone]':'(456) 456-2345'};
jQuery.ajax({
    url: url_update,
    type: "POST",
    data: params,
    success: function (data) {
        if (data == 'true') {
            location.reload();
        } else {
        }
    }
});