perl,javascript—如何将perl中打印的任何特殊字符反转义为javascript
如何在perl中对javascript编码(即$asdf、$asdf1、$asdf2、$asdf3、$KEY_ID)打印的任何特殊字符进行反转义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
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不是特殊字符。$是一个特殊的角色。