javascript - Javascript Ajax 在一个 PHP 页面中提交多个单独的表单(具有相同的表单结构)
问题描述
我有一个 PHP 页面,其中有 12 个带有单独表单 ID 的单独表单,以及单独的复选框、下拉列表等。像这张图片:
现在,表单有更新区,它主要是获取名称、是否启用检查、时间、Dim 并将其发送到 PHP 文件进行处理。
因此,每个表单都有硬编码的 URL LoopInfo.php?id=1,其中 id 从 1 变为 12,因此 LoopInfo.php 知道单击了哪个区域的更新按钮并从该特定区域获取帖子变量
$id = $_GET['id'];
// echo "ID - ".$id.'<br>';
if($id > 0 && $id < 13)
{
// ZName - 1-12
// Zmode - 1-12
// ZTime - 1-12
// ZDim - 1-12
$radio = $_POST['radio'];
if($radio == 1)
{
$radio = 0;
}
// echo "Radio - ".$radio.'<br>';
$zn = "zname".$id;
$znam = $_POST["$zn"];
// echo "Name - ".$znam.'<br>';
$et = "EnTim".$id;
$entim = $_POST["$et"];
// echo "Timer - ".$entim.'<br>';
$ot = "OnTim".$id;
$ontim = $_POST["$ot"];
// echo "On Time - ".$ontim.'<br>';
$oft = "OfTim".$id;
$oftim = $_POST["$oft"];
// echo "Off Time - ".$oftim.'<br>';
$ed = "EnDim".$id;
$endim = $_POST["$ed"];
// echo "Dim - ".$endim.'<br>';
$d = "Dim".$id;
$dim = $_POST["$d"];
// echo "Dim Per - ".$dim.'<br>';
$bin = $radio.$endim."00000".$entim;
// echo "Binary - ".$bin.'<br>';
$loopval = bindec($bin);
// echo "Loop Val - ".$loopval.'<br>';
// print_r($_POST);
// die;
$hunza=simplexml_load_file('LoopInfo.xml');
if($hunza)
{
$zmode='Z'.$id.'Mode';
$hunza->$zmode=$loopval;
if($znam == '')
{
}
else
{
$name='Zname'.$id;
$hunza->$name=$znam;
}
if($entim == 1)
{
$ontime='Z'.$id.'TimeOn';
$hunza->$ontime=$ontim;
$oftime='Z'.$id.'TimeOff';
$hunza->$oftime=$oftim;
}
if($endim == 1)
{
$dimval='Z'.$id.'Dim';
$hunza->$dimval=$dim;
}
$hunza->asXML('LoopInfo.xml');
// echo "<script>console.log('File Updated' );</script>";
header("Location: index.php");
}
else
{
echo "Error Loading File";
echo "<script>console.log('Error Load File' );</script>";
}
}
所以基本上,每个都是一个表单,当按下更新区域时,获取所有表单数据,将其提供给 LoopInfo.php,LoopInfo.php 将这些值更新为相应标签中的 XML。
目标:我想要实现的是,有什么方法可以在不重新加载页面的情况下更新区域,即使用 Ajax Javascript。因此,Javascript 从表单中获取所有更新值,创建 Ajax 请求并发布到同一个 PHP 文件进行处理。我尝试用谷歌搜索“Javascript Ajax 多个表单在一个 PHP 中发送数据”,但没有结果。是否有可能获得一个通用函数,在调用时获取表单 ID 并了解这是 ID 1 并创建 URL LoopInfo.php?id=1 并将所有表单数据与此 URL 请求一起发送。
解决方案
问题是事件传播的原因。检查您的事件 - 是否是多次提交表单的原因。为了避开这个地方event.stopImmediatePropagation();
推荐阅读
- html - Yii2:如何删除视图中的必需属性?
- javascript - 带有.each()的jQuery动态div id不起作用
- c - 可执行文件 IMAGE_OPTIONAL_HEADER ImageBase 为 0
- android - RecyclerView 尝试在空对象引用上调用虚拟方法 setAdapter
- javascript - 用php从输入框中获取值
- android - EAGAIN 何时 open() 会失败?
- python - 以相反的顺序应用 Python Pandas 指数加权平均值
- date - 解析 UTC 日期字符串并转换为不同的格式
- ssis - SSIS OLE DB 数据源输入
- excel - 在 vb 中使用 Epplus 更改条形图的条形大小