Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl,javascript—如何将perl中打印的任何特殊字符反转义为javascript_Javascript_Perl - Fatal编程技术网

perl,javascript—如何将perl中打印的任何特殊字符反转义为javascript

perl,javascript—如何将perl中打印的任何特殊字符反转义为javascript,javascript,perl,Javascript,Perl,如何在perl中对javascript编码(即$asdf、$asdf1、$asdf2、$asdf3、$KEY_ID)打印的任何特殊字符进行反转义 if ($USER_GROUPS_OKAY == 1) { print qq| <script> var params = \$("#USER_INPUT_FORM").serializeArray(); params.push({ name: 'menu_mode', value: 'VIE

如何在perl中对javascript编码(即$asdf、$asdf1、$asdf2、$asdf3、$KEY_ID)打印的任何特殊字符进行反转义

if ($USER_GROUPS_OKAY == 1)
{
    print qq|
    <script>
        var params = \$("#USER_INPUT_FORM").serializeArray();
        params.push({ name: 'menu_mode', value: 'VIEW_IV' });
        params.push({ name: 'KEY_ID_VALID', value: '$KEY_ID' });
        params.push({ name: 'SOURCE_P_NAME', value: '$asdf' });
        params.push({ name: 'DESTINATION_P_NAME', value: '$asdf1' });
        params.push({ name: 'SOURCE_D_NAME', value: '$asdf2' });
        params.push({ name: 'DESTINATION_D_NAME', value: '$asdf3' });                     
        \$.get("cgi_scripts/$0",params,function(data){\$("#graphs").html(data)});
    </script>
|;
}

注意:$asdf、$asdf1、$asdf2、$asdf3是perl变量-如果定义$asdf=qq |“helo world%&%^&%^&*^”|,这可能会杀死代码

如果不重写JSON编码器,您将永远无法捕获所有内容。请参见CPAN。

在双引号(即qq)中,您可以用斜杠转义\n但是,如果由于斜杠的其他含义/用法而变得混乱,我建议将语句中不需要插值的部分更改为单引号字符串(即“.”或q),并用字符串cat运算符点连接它们

如果我读对了,您需要的唯一Perl端变量是$0,对吗?此外,转义的单美元只是为了Perl的缘故,因此我们可以在单引号中删除它们

if ($USER_GROUPS_OKAY == 1)
{
    print q|
      <script>
        var params = $("#USER_INPUT_FORM").serializeArray();
        params.push({ name: 'menu_mode', value: 'VIEW_IV' });
        params.push({ name: 'KEY_ID_VALID', value: '$KEY_ID' });
        params.push({ name: 'SOURCE_P_NAME', value: '$asdf' });
        params.push({ name: 'DESTINATION_P_NAME', value: '$asdf1' });
        params.push({ name: 'SOURCE_D_NAME', value: '$asdf2' });
        params.push({ name: 'DESTINATION_D_NAME', value: '$asdf3' });                     
        $.get(
    | . qq|
        "cgi_scripts/$0"
    | . q|
        ,params,function(data){$("#graphs").html(data)});
      </script>
    |;
} 

能否在用户输入表单中添加隐藏的输入字段?就像在呈现HTML表单时一样,您需要$KEY_ID从Perl程序中获取其值。。。这样你就不必把所有的值都推到params数组上。也许我们没有正确理解这个问题。。。您已经在转义代码中的特殊字符-每个jQuery变量的$前面都有一个反斜杠,这是@Joel确认的正确方法。似乎您希望打印Perl变量的值,所以您不想逃避这些。。。您的代码看起来可以工作,这让我觉得我们缺少了一些东西。$asdf1不是特殊字符。$是一个特殊的角色。