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();
            }
        });
    }
});

ユーザーは 1 つ以上のチェックボックスを選択して、削除ボタンを押すことができます。これにより、チェックボックスの値 (すべてのビデオ名) が返され、それらが削除され、テーブル内の行が削除されます。

これが問題です。私は 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_decodeJSON 文字列をデコードする which を使用します。続きを読む

例:

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

問題がある場合はお知らせください。

于 2013-01-05T05:21:51.163 に答える
0

おそらく、リクエストがPHPコードのPOSTである場合、 $_POST['videonames'] を探しているので、それらをリクエストのデータパラメータとして渡す必要があります。

また、それを 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 に答える