我想通过 POST 将 HTML 元素的属性作为数据发送,例如元素是否可见?
6 回答
您不能单独使用 PHP 和 HTML 来完成,因为 HTML 表单只会发布表单输入的名称。您需要添加一些 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,否则操作将被取消。
在阿贾克斯。试试Prototype Framework,真的好用! 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(客户端脚本)的原因。