2017-04-19 99 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'] ?>">