簡體   English   中英

使用jQuery將數據傳遞到新頁面$ _POST

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM