我想通过POST将HTML元素的属性作为数据发送,例如元素是否可见?
答案 0 :(得分:2)
您无法单独使用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;
}
}
另一种方法不是修改输入本身的值,而是为每个可见的用户输入保留隐藏的输入,并将属性设置为隐藏输入的值而不是可见输入。
答案 1 :(得分:1)
你不能用PHP做到这一点。您需要使用Javascript来确定此信息,然后发送Ajax请求或将此信息添加到现有表单。
详细说明:PHP执行服务器端然后发送到客户端(浏览器)。服务器不知道浏览器中HTML元素的状态。
据我所知,你有一张提交的表格?因此,添加一个在提交表单之前调用的javascript(表单的onsubmit属性),并让它读出元素的状态(可见,隐藏,...),并将此信息设置为一些隐藏的表单字段。
确保在提交表单之前调用的javascript返回true,否则操作将被取消。
答案 2 :(得分:1)
在ajax中。 试试Prototype Framework,它真的很容易使用! http://prototypejs.org/api/ajax/request
答案 3 :(得分:0)
如果你想这样做,我想你必须创建一些隐藏的字段和javascript,根据你的元素属性填充信息。据我所知,没有其他办法。
答案 4 :(得分:0)
您必须首先定义数据定义标准:您要存储什么,以什么名称存储。
然后,imho你必须序列化结果并通过POST发送它,最后在服务器上反序列化一次。
使用JSON序列化来实现有效的处理方式。
答案 5 :(得分:0)
使用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(客户端脚本)的原因。