我有一个带有许多复选框的 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();
}
});
}
});
用户可以选择一个或多个复选框并点击删除按钮。这应该返回复选框的值(所有视频名称),它们被删除,我删除表中的行。
这就是问题所在。我正在使用 Joomla 组件开发,所以我在 url 中传递值。视频的名称太长了,无法做到这一点。有人可以选择多达 100 个视频名称,这会使 url 字符串太长。任何人都可以提出替代方案吗?
编辑:我将其更改为基于@Dasun 反馈的数组。见上文values
。如果我用以下方法测试这个值:
alert(values);
我得到一个看起来像这样的输出:blah.mp4,foo.mp4,bar.mp4
. 我期望的。但是每个视频名称都在我不想要的查询字符串上。要么我没有正确创建数组,要么我不明白你如何只传递数组对象而不是查询字符串上数组的全部内容。