2017-04-19 98 views
0

我有兩個表,並或多或少是這樣的一個形式裏面輸入:

表代碼(兩個表是相同的,除了細微的差別在什麼表它調用):

<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()屬性發布到下一個ste p的形式,這是另一頁。

我試過了隱藏的輸入想法,但由於它在輸入共享相同名稱的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('/path/to/stepDos.php', {data: data}, function(ev) 
{ 
    window.location.replace('/path/to/stepDos.php'); 
}); 

再次無果 - 什麼我失蹤?

感謝

+0

[嘗試此鏈接](http://stackoverflow.com/a/43489307/2168925)通過傳遞序列化輸入數據來調用Ajax函數。 – Ashok

+0

@Ashok - 我無法使用輸入,因爲它們全部共享相同的名稱,並且因爲它全部在while循環內,所以要創建的最後一個輸入是爲該名稱設置值的那個,儘管點擊或不點擊 - 因此我正在使用數據標籤:) – ThisGuyHasTwoThumbs

+0

如果您希望它成爲每行的表單,然後在循環中執行。我的意思是每行一個表格以及隱藏的輸入。所以這不會是一個麻煩。 –

回答

1

正如我在評論中提到,你不必做一個單一的形式它裏面的所有數據..相反,你可以去在一個循環中每行1種形式。

這會給你預期的結果!

0

你在做什麼是POST-ING在後臺數據頁面(這是jQuery的是在這種情況下),只是沒有發佈數據之後重定向存在(這就是窗口.location.replace(...)確實)。我建議的只是創建一個表單並提交,這樣你的瀏覽器將複製所有的帖子字段並繼續。

+0

它已經全部放在一個表單中 - 問題在於,有一個可能爲30行的表格,我只需要一組值,這個想法會出錯,因爲表格行將共享輸入的一組名稱,所以不能不管你點擊了什麼,它會被while循環中的最後一個值覆蓋 – ThisGuyHasTwoThumbs

0

你可以retrive數據屬性通過調用.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>

+0

這已經是我正在做的了...... while循環在tr元素中有數據attr :) – ThisGuyHasTwoThumbs

0

您可以嘗試使用帶有屬性名隱藏的輸入與陣列格式像行下方的['身份證']作爲關鍵指標。

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