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

ページ上で一意であるid必要があります。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 に答える