私はいくつかのチェックボックスを持つhtmlテーブルを持っています:
<table id="webcam-table" class="pretty">
<thead>
<tr>
<th>Camera Name</th>
<th>Date Created</th>
<th>Video Size</th>
<th>Video Length</th>
<th><input type="checkbox" name="checkboxselectall" title="Select All" />
<button type="submit" class="deletebutton" name="delete_video" title="Delete the selected videos">Delete</button></th>
</tr>
</thead>
<tbody>
<form name="myform" action="">
<tr >
<td onclick="DoNav('<?php echo $url; ?>');">
<?php echo $this->result_videos[$i]["camera_name"]; ?>
</td>
<td onclick="DoNav('<?php echo $url; ?>');">
<?php echo setlocalTime($this->result_videos[$i]["video_datetime"]); ?>
</td>
<td onclick="DoNav('<?php echo $url; ?>');">
<?php echo ByteSize($this->result_videos[$i]["video_size"]); ?>
</td>
<td onclick="DoNav('<?php echo $url; ?>');">
<?php echo strTime($this->result_videos[$i]["video_length"]); ?>
</td>
<td>
<input type="checkbox" value="<?php echo $this->result_videos[$i]["video_name"]; ?>" title="Mark this video for deletion"/>
</td>
</tr>
テーブルを構築するためのphpコードである、省略しているコードがたくさんあります。入力タイプ チェックボックスの値がビデオの名前を返すことに注意してください。これは、ビデオを削除するために必要です。各ビデオの値を処理するための私のjqueryコード:
jQuery(".deletebutton").on("click", function() {
if (confirm("Are you sure you want to delete the selected videos?"))
{
var values = [jQuery('input:checkbox:checked').map(function () {
return this.value;
}).get()];
alert(values);
var $this = jQuery(this);
jQuery.ajax({
url: 'index.php?option=com_recordings&task=deletevideos&videonames=+values+&format=raw',
type: "POST",
success: function(data){
$this.closest("tr").remove();
}
});
}
});
ユーザーは 1 つ以上のチェックボックスを選択して、削除ボタンを押すことができます。これにより、チェックボックスの値 (すべてのビデオ名) が返され、それらが削除され、テーブル内の行が削除されます。
これが問題です。私は Joomla コンポーネント開発を使用しているので、URL に値を渡します。これを行うには、ビデオの名前が長すぎます。誰かが最大 100 個のビデオ名を選択できるため、URL 文字列が長くなりすぎます。誰かが代替案を提案できますか?
編集: @Dasun フィードバックに基づいて、これを配列に変更しました。については上記を参照してくださいvalues
。この値を次のようにテストすると:
alert(values);
次のような出力が得られますblah.mp4,foo.mp4,bar.mp4
。私が期待するもの。しかし、各ビデオ名は、私が望まないクエリ文字列にあります。配列を正しく作成していないか、クエリ文字列で配列の内容全体ではなく、配列オブジェクトのみを渡す方法がわかりません。