我在做包含多个字段集的 ajax 表单时遇到了这个问题。以求职申请为例。我从一个专业的参考集开始,我有一个按钮,上面写着“添加更多”。这会使用 $count 参数进行 ajax 调用,以再次包含输入集(姓名、联系人、电话……等) 这在第一页调用中可以正常工作,因为我执行以下操作:
<?php
include('references.php');`
?>
用户按下一个进行 ajax 调用的按钮 ajax('references.php?count=1'); 然后在 references.php 文件中我有类似的内容:
<?php
$count = isset($_GET['count']) ? $_GET['count'] : 0;
?>
我在整个站点中还有其他类似的动态包含传递参数。当用户按下提交并且出现表单错误时,就会出现问题。因此,现在为了不重复代码以包含那些动态包含的额外字段集,我创建了一个函数,该函数将使用适当的 GET 参数设置包含。
<?php
function include_get_params($file) {
$parts = explode('?', $file);
if (isset($parts[1])) {
parse_str($parts[1], $output);
foreach ($output as $key => $value) {
$_GET[$key] = $value;
}
}
include($parts[0]);
}
?>
该函数检查查询参数,并自动将它们添加到 $_GET 变量中。这对我的用例非常有效。
以下是调用时表单页面上的示例:
<?php
// We check for a total of 12
for ($i=0; $i<12; $i++) {
if (isset($_POST['references_name_'.$i]) && !empty($_POST['references_name_'.$i])) {
include_get_params(DIR .'references.php?count='. $i);
} else {
break;
}
}
?>
另一个动态包含 GET 参数以适应特定用例的示例。希望这可以帮助。请注意,此代码尚未处于完整状态,但这应该足以让任何人开始为他们的用例做好准备。