根据我的理解,检索 $_POST 数据的唯一方法是使用元素的 name
属性,如下所示:
<INPUT type="text" name="txt">
和 PHP 部分:
<?php $text = $_POST["txt"]; ?>
我有一个包含包含纯文本的单元格的表格,例如:
<td class="textField" id="txt1"> Some text </td>
有没有办法在这些表格单元格中发布文本并使用类或 id 检索它们?也许有一种聪明的方法可以解决这个问题? <td>
没有名称属性,因此是我提问的原因。
谢谢!
您可以使用 ajax,通过 javascript 从表中获取值。JQuery 是一个很好的库:
http://api.jquery.com/category/ajax/
$_POST
和$_GET
来自请求。这意味着浏览器将它们与标头一起发送,PHP 为它们提供了一个带有 $_POST
、$_GET
、$_COOKIE
和 $_REQUEST
的接口。浏览器不会在请求中发送表的内容。
如果您试图使字段"只读",那么您就以错误的方式处理它。如果字段是只读的,则永远不应信任浏览器重新发送相同的值。
要从许多具有相同名称的表单字段中检索值(因为您在 PHP 中使用循环生成它们),请在字段名称后附加括号。
简单的例子:
<form method="post">
<input type=text name="myfield[]">
<input type=text name="myfield[]">
<input type=text name="myfield[]">
<input type=text name="myfield[]">
</form>
如果添加到代码中:
<?php print_r($_POST); ?>
你会注意到 $_POST 变量填充了一个名为 "myfield" 的数组,该数组有 4 个值,从 $_POST['myfield'][0] 到 $_POST['myfield'][3]。然后,您可以在 PHP 中使用 foreach 循环来检索所有值。
最终对
我有用的解决方案是使用 jQuery 获取数据,用 JSON 编码,然后将其添加到其余表单数据的串行数组中。
$("#orderForm").submit(function(e) {
e.preventDefault();
// Get NON-INPUT table cell data
var subtotal = new Array();
$('#priceTable td.subtotal').each(function() {
subtotal.push($(this).html());
});
// Get all INPUT form data and organize as array
var formData = $(this).serializeArray();
// Encode with JSON
var subArray = JSON.stringify(subtotal);
// Add to formData array
formData.push({name: 'sub', value: subArray});
// Submit with AJAX
$.ajax({
url: "submitOrder.php",
data: formData,
type: 'post',
success: function(data) {
alert(data);
}
});
});
在PHP方面:
$subtotals = json_decode($_POST['sub']);