如何通过 POST 发送有关 HTML 元素的信息


How to send info on HTML elements via POST?

我想通过 POST 将 HTML 元素的属性作为数据发送,例如元素是否可见?

你不能单独使用 PHP 和 HTML 来做到这一点,因为 HTML 表单只会发布表单输入的名称。您需要添加一些JavaScript,在提交表单时,这些JavaScript将迭代其所有输入并修改其值以包含属性值。

例:

yourform.onbeforesubmit = function() {
  // Loop over form elements and append -visible or -hidden to its value based on CSS style
  // jQuery selectors like .is(":visisble") would help a lot here.
  // This is just a basic example though - it would require an explicit visibility CSS rule on each 
  // input element...
  for (var i=0; i<yourform.elements.length; i++) {
    yourform.elements[i].value = += "-" + yourform.elements[i].style.visibility;
  }
}

另一种方法是修改输入本身的值,而是为每个可见用户输入保留一个隐藏输入,并将属性设置为隐藏输入而不是可见输入的值。

你不能用PHP做到这一点。您需要使用 Javascript 来确定此信息,然后发送 Ajax 请求或将此信息添加到现有表单中。

更详细一点:PHP 在服务器端执行,然后发送到客户端(浏览器)。服务器不知道浏览器中 HTML 元素的状态。

据我所知,您无论如何都要提交表格吗?因此,添加一段在提交表单之前调用的javascript(表单的onsubmit属性),并让它读出元素的状态(可见,隐藏,...),并将此信息设置为一些隐藏的表单字段。

确保在提交表单之前调用的 javascript 返回 true,否则操作将被取消。

在 ajax 中。试试原型框架,它真的很容易使用!http://prototypejs.org/api/ajax/request

如果你想

这样做,我想你将不得不创建一些隐藏字段和javascript,根据你的元素属性用信息填充它们。据我所知,没有其他办法。

您必须首先定义数据定义标准:要存储什么,以及以什么名称存储。

然后,恕我直言,您必须序列化结果并通过 POST 发送,以便最终在服务器上对其进行一次反序列化。

使用 JSON 序列化作为有效的继续操作方法。

使用 PHP 包含隐藏输入,如下所示:

<input type="hidden" id="hidden1" name="hidden1" value="<?php if(condition) echo "default"; else echo "default";?>">

PHP可以在页面加载期间设置此默认值,用于将额外的隐藏数据从一个页面加载传输到另一个页面加载。但也可以在页面加载后通过javascript修改:

<script type="text/javascript">
document.getElementById("hidden1").value="true";
</script>

注意:PHP 只能在下一次页面加载期间更改任何隐藏或非隐藏元素的值。它无法控制发送到浏览器的 HTML。这就是为什么你需要Javascript(客户端脚本)。