我最初定义了perl变量
$delimit ="C";
$filename=\\aemdata.fcc.com\aem\GE\2015\Files\list.txt
我曾经在javascript中使用那些perl变量。每当用户点击save时,上述变量将通过ajax传递,后端perl子程序将根据上述参数执行。这是代码。
var form_data = new FormData();
form_data.append('action', "File_Check"); //perl subroutine which is called
form_data.append('delimit', "$delimit");
form_data.append('jsondata', data);
\$.ajax({
url: http://aemdata.fcc.com/cgi-bin/test/excel.pl, // directed to url where that perl subroutine is placed
contentType: false,
processData: false,
type: 'post',
data: form_data,
cache:false,
datatype: "script",
success: function (result) {
},
error: function (data) {
}
});
此代码工作正常。现在不是在开始时最初指定$ filename。我想动态添加它作为参数。将其附加到javascript对象,并将其与其他参数一起传递给子例程perl代码。这是我得到错误的第二个代码
var form_data = new FormData();
form_data.append('action', "File_Check"); //perl subroutine which is called
form_data.append('delimit', "$delimit");
form_data.append('jsondata', data);
form_data.append('filename', "$filename"); //ERROR ON THIS LINE
\$.ajax({
url: http://aemdata.fcc.com/cgi-bin/test/excel.pl, // directed to url where that perl subroutine is placed
contentType: false,
processData: false,
type: 'post',
data: form_data,
cache:false,
datatype: "script",
success: function (result) {
},
error: function (data) {
}
});
这个追加不起作用。它给我一个错误,如"未捕获的语法错误:意外的令牌ILLEGAL"在上面代码的第5行。 如果我可以将其与其他参数一起传递,则将调用子例程并且代码可以正常运行。但是我无法使用append传递URL。
有人可以在这提出任何建议吗?任何输入将受到高度赞赏。
答案 0 :(得分:1)
您的结果字符串包含反斜杠,它是JavaScript中的转义字符。您需要使用正确的escape notation处理任何特殊字符,例如\\
而不是\
作为反斜杠。
答案 1 :(得分:0)
如上所述,对代码的以下更改有效。一旦我获得动态路径,我使用正则表达式,然后将其附加到javascript对象。
代码如下:
$filename=~ s/\\/\\\\/g;
form_data.append('filename', "$filename");