0

我在表单中有一个 html 表。

该表充满了来自我的数据库的信息。这是表格的样子:

<table>
<tr> 
<td >Number</td>
<td >Name</td>
<td >Last Name</td>
</tr> 
<tr> 
<td> <input type="hidden" id="number" value="1">1</td>
<td> <input type="hidden" id="name" value="John">John</td>
<td> <input type="hidden" id="last" value="Snow">Snow</td>
</tr> 
<tr> 
<td> <input type="hidden" id="number" value="2">2</td>
<td> <input type="hidden" id="name" value="Jean">Jean</td>
<td> <input type="hidden" id="last" value="Dow">Dow</td>
</tr> 
.
.
</table>

表的行数取决于数据库抛出的行数。

如果信息正确,用户将点击表单的提交按钮。

提交按钮会将其带到 js 文件中的函数。从那里,我需要获取表的值并将它们发送到一个 php 文件。

为此,在函数内部,在我正在执行的 js 文件中:

var sNumber = $("# number ").val();
 var sName = $("#name").val();
  var sLast = $("#last").val();
   params = '';
    params += '&number='+sNumber;
    params += '&name='+sName;   
    params += '&last='+sLast;   
     theUrl = 'controller.php';
   $.ajax ({
        url: theUrl,
        data: params,
        async:false,
        success: function (data, textStatus)
        {              
        }
    });

但由于表中行的 id 相同,我只得到第一行的信息。

任何人都可以帮我将表格的所有信息发送到 php 文件吗?

非常感谢

4

4 回答 4

2

anid在页面上必须是唯一的。使用class而不是id

当您的页面中没有更多的双 id 时,请查看jQuery each()功能以在您的 ajax 调用中获取所有必需的数据

于 2012-06-10T09:57:35.730 回答
1

使用类并做为:

var listName = [];
$(".name").each(function(){
    listNames.push($(this).val());
    alert($(this).val());
})​
于 2012-06-10T10:01:44.793 回答
0

id元素上的属性必须是唯一的。使用一个类。使用 jQuery 查看与类匹配的集合。

您可以在 GET 和 POST 中多次发送相同的变量。

params = '';
$(".name").each(function(){
  var sName = $(this).val();
  params += '&name='+sName;   
});
//similar for number and last

theUrl = 'controller.php';
$.ajax ({
        url: theUrl,
        data: params,
        async:false,
        success: function (data, textStatus)
        {              
        }
    });
于 2012-06-10T10:07:02.757 回答
0

ID 永远不应该相同。每个 ID 应该只有 1 个给定项目的项目。也就是说,如果你想拥有具有相似特性的项目,你应该使用类。也就是说,您可能还希望包含 name 属性。

如果您真的想使用 Id,则应将其标记为

<table id="users">
<tr> 
<td >Number</td>
<td >Name</td>
<td >Last Name</td>
</tr> 
<tr class="someclass"> 
<td> <input type="hidden" name="number" id="number-1" value="1">1</td>
<td> <input type="hidden" name="name" id="name-1" value="John">John</td>
<td> <input type="hidden" name="last" id="last-1" value="Snow">Snow</td>
</tr> 
<tr class="someclass"> 
<td> <input type="hidden" name="number" id="number-2" value="2">2</td>
<td> <input type="hidden" name="name" id="name-2" value="Jean">Jean</td>
<td> <input type="hidden" name="last" id="last-2" value="Dow">Dow</td>
</tr> 
.
.
</table>

和 javascript 应该像

//get the table and iterate over every row
$('table').find('.someclass').each(function(){
  //get each inputs name and value
  var somevar = $(this)
  var number = somevar.find('[name=number]').val()
  var name = somevar.find('[name=name]').val()
  var last = somevar.find('[name=last]').val()
  //Do something with these
});

您可以做的其他一些事情就是简单地使用jQuery.post()。所以在提交时你会做

//serialze the form and submit it. 
$.post("controller.php", $('form').serialize(),
   function(data) {
     //handle the response
     alert("Data Loaded: " + data);
   }
);

为此,您需要使用number[]name[]last[]作为输入名称,以便将它们存储为数组。

于 2012-06-10T10:08:17.767 回答