0

チェックボックスのリストがあります。選択したチェックボックスのリストを perl スクリプトに渡そうとしています。次のコードを使用してチェックボックスのリストを取得しています:

function exec(){
    var checkedValue = "";  
    var inputElements = document.getElementsByTagName('input'); 
    for(var i=0; inputElements[i]; i++){ 
      if(inputElements[i].className==="chk" &&  
         inputElements[i].checked){ 
           checkedValue += inputElements[i].value;
           if (inputElements[i+1])
               checkedValue += ", ";
           else
               checkedValue += "";  
      } 
    } 

次に、次のように "checkedValue" を perl スクリプトに渡します。

self.location='/cgi-bin/ATMRunJob.pl?tcs='+checkedValue;

perl スクリプトでは、配列を次のように読み取ります。

our @testCasesToRun = $var->param("tcs");

これは、次のようにハッシュに割り当てられます。

my $runSpec = {

         TestCasesToRun    => @testCasesToRun
      };

ただし、ブラウザーでページを読み込むと、次のエラーが表示されます。

Failed TestLimits() with error: [hash: k=TestCasesToRun, v=1,]:[array]:Value is not an array ref
In check against following TLS:
[
  'hr',
  {
    'OptDefaults' => {
      'JobRunningGroupName' => 'astbluetooth',
      'RunMode' => 'Queue',
      'CountTowardsReporting' => 1,
      'JobOwnerGroupName' => 'astbluetooth',
      'SelectSetupTeardown' => 1
    },
    'Optional' => {
      'TestCasesToRun' => [
        'ar',
        undef,
        undef,
        [
          'r',
          1,
          undef
        ]
      ],

Perl と CGI スクリプトは初めてです。このエラーを回避するにはどうすればよいですか?

注 : すべてのコード スニペットは簡潔にするために短縮されていますが、それでも問題の本質を描写しています。

編集:私がやりたいのはこれです。ユーザーは、実行したいチェックボックス付きのリストからテスト ケースのリストを選択します。選択したすべてのテスト ケースのテスト ケース ID を取得し、perl スクリプトに渡します。perl スクリプトでは、選択したテストケース ID を runspec ハッシュの TestCasesToRun 要素に割り当てるだけです。

それを行う正しい方法は何ですか?

4

1 に答える 1