使用jquery将数据传递到新页面$ _POST

时间:2017-04-19 10:52:28

标签: javascript php jquery ajax

我有两个表格和一个表格中的输入,或多或少是这样的:

表格代码(两个表是相同的,除了它调用的表格略有不同):

<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');
});

再次无济于事 - 我错过了什么?

由于

4 个答案:

答案 0 :(得分:1)

正如我在评论中所提到的,你不必制作一个包含其中所有数据的单个表格。相反,你可以在循环中每行获得1个表单。

这将为您提供预期的结果!

答案 1 :(得分:0)

您正在做的是在后台将数据发布到页面(在这种情况下是jQuery的用途),然后重定向,之后没有发布数据(&#39) ; s window.location.replace(...)是什么)。我建议的只是创建一个表单并提交,这样您的浏览器就会复制所有的帖子字段并继续保持原样。

答案 2 :(得分:0)

您可以通过调用.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>

答案 3 :(得分:0)

您可以尝试使用隐藏输入,其属性名称与数组格式如下,行[&#39; id&#39;]作为键索引。

<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'] ?>">