0

我有一个带有许多复选框的 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. 我期望的。但是每个视频名称都在我不想要的查询字符串上。要么我没有正确创建数组,要么我不明白你如何只传递数组对象而不是查询字符串上数组的全部内容。

4

2 回答 2

0

如果我在下面理解您的问题应该可以帮助您。

使用 Joomla 表示法检索数据。

$array_json = JRequest::getVar('data', 0, ''); 

根据要求更新了答案。

您可以使用AJAX传输所有数据。

$.ajax({
  type: 'POST',
  url: 'index.php?option=com_recordings&task=deletevideos&videonames=+values+&format=raw',
  data: values,
  dataType: 'json',
  success: function(result) {
   alert('done');
  },
  error : function() {
   alert('error');
  } 
  });

在 PHP 级别检索它们,如上所示(getVar)。然后解码通过 AJAX 发送的数据。使用json_decode它将解码 JSON 字符串。阅读更多

例如:

$x = json_decode($array_json);
print_r($x);

如果您有任何问题,请告诉我。

于 2013-01-05T05:21:51.163 回答
0

也许如果您的请求是您的 php 代码中的 POST,您将寻找 $_POST['videonames'] 那么您应该将它们作为请求的数据参数传递。

还要通过它 trought GET 它应该看起来像

   &videonames[0]=values[0]&videonames[1]=values[1]

也许这段代码会起作用:

   $.ajax({
     type: 'POST',
     url: 'index.php?option=com_recordings&task=deletevideos&format=raw',
     data: { 'videonames': values},
     dataType: 'json',
     success: function(result) {
      alert('done');
     },
     error : function() {
      alert('error');
     } 
     });
于 2013-01-10T14:22:40.443 回答