[英]passing data to new page $_POST with jquery
我有两个表和一个或多或少这样的形式内的输入:
表代码(两个表相同,除了调用的表略有不同):
<table cellpadding="0" cellspacing="0" class="paperTable searchResultContainer">
<thead>
<tr>
<th>Name</th>
<th>ID</th>
<th>Company Reg.</th>
<th>Postcode</th>
</tr>
</thead>
<tbody>
<?php while ($row = $items->fetch_assoc()) : ?>
<tr class="row" data-address1="<?php echo $row['address1']; ?>"
data-address2="<?php echo $row['address2']; ?>" data-address3="<?php echo $row['address3']; ?>"
data-county="<?php echo $row['address4']; ?>" data-postcode="<?php echo $row['postcode']; ?>"
>
<td><?php echo (strlen($row['name']) > 0 ? $row['name'] : '-'); ?></td>
<td><?php echo (strlen($row['id']) > 0 ? $row['id'] : '-'); ?></td>
<td><?php echo (strlen($row['company_reg_no']) > 0 ? $row['company_reg_no'] : '-'); ?></td>
<td><?php echo (strlen($row['postcode']) > 0 ? $row['postcode'] : '-'); ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
我的输入是一个简单的单行复选框,询问上述内容是否与搜索条件都不匹配。
我要执行的操作是,如果用户单击表行,它将<tr>
标记的.data()属性发布到表单(即另一页)的下一步。
我尝试了隐藏输入的想法,但是由于它处于while循环中,而输入具有相同的名称,因此输入的值将是循环中的最后一个,因为它是最后设置的。 我也尝试过ajax:
$.ajax({
data: $(this).data(),
type: 'post',
url: 'stepDos.php',
success: function(data)
{
window.location.replace('/path/to/stepDos.php');
}
});
当我var_dumped $ _POST无效时,它返回空。
我还尝试了$ .post函数:
$.post('/path/to/stepDos.php', {data: data}, function(ev)
{
window.location.replace('/path/to/stepDos.php');
});
再次无济于事-我缺少什么?
谢谢
正如我在评论中提到的那样,您不必在其中包含所有数据的情况下制作一个单一表单。相反,您可以在循环中每行使用一种表单。
这将为您带来预期的结果!
您正在做的是在后台将数据发布到页面中(这就是jQuery在这种情况下的目的),然后仅重定向到那里而没有发布数据(这就是window.location.replace(...)确实)。 我建议的只是创建一个表单并提交该表单,这样您的浏览器将复制所有发布字段并继续进行。
您可以通过调用.data()函数来检索数据属性,请参见以下代码段:
$(".row").click(function(){ console.log($(this).data()); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table cellpadding="0" cellspacing="0" class="paperTable searchResultContainer"> <thead> <tr> <th>Name</th> <th>ID</th> <th>Company Reg.</th> <th>Postcode</th> </tr> </thead> <tbody> <tr class="row" data-address1="addr11" data-address2="addr12" data-address3="addr13"> <td>Nome 1</td> <td>ID 1</td> <td>Company 1</td> <td>26027</td> </tr> <tr class="row" data-address1="addr21" data-address2="addr22" data-address3="addr23"> <td>Nome 2</td> <td>ID 2</td> <td>Company 2</td> <td>26900</td> </tr> <tr class="row" data-address1="addr31" data-address2="addr32" data-address3="addr33"> <td>Nome 3</td> <td>ID 3</td> <td>Company 3</td> <td>20151</td> </tr> </tbody> </table>
您可以尝试使用属性名称具有数组格式的隐藏输入,如下所示,将row ['id']作为键索引。
<input type="hidden" name="data[<?php echo $row['id'] ?>]['id']" value="<?php echo $row['id'] ?>">
<input type="hidden" name="data[<?php echo $row['id'] ?>]['name']" value="<?php echo $row['name'] ?>">
<input type="hidden" name="data[<?php echo $row['id'] ?>]['company_reg_no']" value="<?php echo $row['company_reg_no'] ?>">
<input type="hidden" name="data[<?php echo $row['id'] ?>]['postcode']" value="<?php echo $row['postcode'] ?>">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.